2012-01-24 25 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

该代码的作品适合我! –

相关问题