2012-01-24 48 views
3

我正在構建一個android應用程序,我需要顯示當前正在運行的應用程序的列表,但它包含所有進程,包括許多系統或android的defualt進程:launcher,dailer等任何方式來檢查正在運行的進程是否是android中的系統進程

現在有什麼辦法來檢查當前正在運行的進程是不是Android的系統進程(默認進程)。

非常感謝。

+0

請檢查我的帖子,如果它是正確的,請將其標記爲正確答案。謝謝 –

回答

3

根據此documentation,似乎您可以使用FLAG_SYSTEM_PROCESS來標識進程是否是系統進程。這裏是關於this的SO討論。

+0

感謝您的回覆。但我認爲FLAG_SYSTEM_PROCESS適用於RunningService而不適用於RunningProcess。我需要檢查Currently RunningProcess。 –

0

您可以使用ActivtyManager獲取Android中所有正在運行的進程的列表。請參閱下面的鏈接以獲取更多信息Android process killer

+0

這不是我想要的。我已經有正在運行的進程列表,但我想檢查是否有任何一個它們是Android的系統進程... –

5

這裏是我的代碼: 首先獲得運行應用程序的列表,請執行下列操作

public void RunningApps() { 
     final PackageManager pm = getPackageManager(); 
     //Get the Activity Manager Object 
     ActivityManager aManager = 
     (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
     //Get the list of running Applications 
     List<ActivityManager.RunningAppProcessInfo> rapInfoList = 
          aManager.getRunningAppProcesses(); 
     //Iterate all running apps to get their details 
     for (ActivityManager.RunningAppProcessInfo rapInfo : rapInfoList) { 
      //error getting package name for this process so move on 
      if (rapInfo.pkgList.length == 0) 
       continue; 

      try { 
       PackageInfo pkgInfo = pm.getPackageInfo(rapInfo.pkgList[0], 
       PackageManager.GET_ACTIVITIES); 

       if (isSystemPackage(pkgInfo)) { 
        //do something here 
       } 
       else { 
        //do something here 
       } 

      } catch (PackageManager.NameNotFoundException e) { 
       e.printStackTrace(); 
       Log.d(TAG, "NameNotFoundException :" + rapInfo.pkgList[0]); 
      } 
     } 
    } 

的實際功能檢查正在運行的應用程序是系統的應用程序,並在以前的方法使用下面給出

/** 
    * Return whether the given PackgeInfo represents a system package or not. 
    * User-installed packages (Market or otherwise) should not be denoted as 
    * system packages. 
    * 
    * @param pkgInfo The Package info object 
    * @return Boolean value indicating if the application is system app 
    */ 
    private boolean isSystemPackage(PackageInfo pkgInfo) { 
     return (pkgInfo.applicationInfo.flags & 
       ApplicationInfo.FLAG_SYSTEM) != 0; 
    } 

我希望它有幫助。

+0

該代碼的作品適合我! –

相關問題