Android获取其他应用程序的PID

Mat*_*ttC 11 java android

我希望能够启动一个活动或服务并尽快获得该过程的PID,这将是最好的情况.除了浏览/ proc目录之外,我还有其他任何选项吗?这会导致活动/服务启动时间与我在proc中找到我想要的内容之间的可变时间竞争条件目录并开始观察?

Fem*_*emi 12

我认为您需要使用ActivityManager:请参阅http://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo.html以获取流程信息.你可以:

  1. 获取所有正在运行的app流程
  2. 找到你的应用.
  3. 得到它的PID.

  • 在 Android API 21 及以上版本上有什么办法可以实现这一点吗?我不认为 RunningAppProcessInfo 在 Android L 及更高版本中公开。 (2认同)

小智 7

ActivityManager activityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> pidsTask = activityManager.getRunningAppProcesses();

for(int i = 0; i < pidsTask.size(); i++) {
    nameList.add(pidsTask.get(i).processName);
    idList.add(pidsTask.get(i).uid);
}
Run Code Online (Sandbox Code Playgroud)

pidsTask.get(i).uid //返回应用程序的PID(进程)