Java Android获取其他应用程序的PID

Java Android获取其他应用程序的PID,java,android,Java,Android,我希望能够启动一项活动或服务,并尽快获得该流程的PID,立即将是最好的情况。除了浏览/proc目录之外,我还有其他选择吗?从活动/服务启动到我在proc目录中找到所需内容并开始观察所需时间之间,浏览/proc目录会导致时间竞争条件的变化。我想您需要使用ActivityManager:查看流程信息。你可以: 获取所有正在运行的应用程序进程 找到你的应用程序 获取它的PID 试试这个 int id= android.os.Process.myPid(); 其中TAG=“Name_Of_Your_A

我希望能够启动一项活动或服务,并尽快获得该流程的PID,立即将是最好的情况。除了浏览/proc目录之外,我还有其他选择吗?从活动/服务启动到我在proc目录中找到所需内容并开始观察所需时间之间,浏览/proc目录会导致时间竞争条件的变化。

我想您需要使用ActivityManager:查看流程信息。你可以:

  • 获取所有正在运行的应用程序进程
  • 找到你的应用程序
  • 获取它的PID
  • 试试这个

    int id= android.os.Process.myPid();
    
    其中TAG=“Name_Of_Your_Activity”

    ActivityManager ActivityManager=(ActivityManager)this.getSystemService(Context.Activity_服务);
    List pidsTask=activityManager.getRunningAppProcesses();
    对于(int i=0;i

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

    很奇怪,但究竟是为了什么?应用程序组件可以在不同的进程上运行,不同应用程序的组件可以共享同一个进程,因此没有一对一的关系,所以这是毫无意义的。@john出于安全目的在应用程序探查器上工作。在应用程序启动之前,让我的监控工具就位并收集数据非常重要。谢谢。我担心这也会导致在我启动应用程序配置文件和获取PID之间出现竞争情况,但这似乎比浏览/proc目录更干净,因此您会得到+1Ah:如果您正在另一个进程中查找此文件,那么是的,您可能会在一段时间内(未定义)看不到它。但不确定是否有更好的选择:如果你找到了,请告诉我。有没有办法在Android API 21及以上版本上实现这一点?我不认为RunningAppProcessInfo在Android L及以上版本中公开。google进程和普通应用程序进程之间有什么区别吗?如果我像这样检查我正在运行的进程,我将检索我自己应用程序的当前进程。但手机同时运行谷歌地图,但我无法确定谷歌地图的流程。(或者有没有其他方法可以检索google maps pid?)我想要的是其他进程的pid,而不是我自己的。这个答案是复制的uid不是应用程序的实际pid例如,它的pid可能是302,而uid可能是10039
    for (RunningAppProcessInfo runningProInfo : runningProcInfo) {
    
        int pid = runningProInfo.pid;
    
        Log.e(TAG+"-pid", ""+pid);
    
    }
    
    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);
    }