Search code examples
androidprocesspid

Android - How to get the processName or packageName by using PID?


MY QUESTION: What could I use to retrieve the processName or packageName of a certain process given its PID?

Since in my task manager I wanted to use the PID while utilizing the killBackgroundProcesses code to kill the processes. Problem is I need the packageName/processName to do that and it would be such a hassle to the user if I asked them to type in the processName rather than just typing its PID.

here's the image of my task manager:

http://i.imgur.com/1zpXg.jpg


Solution

  • Hello you can use this code, it works for me in Android 2.3.3:

    private String getAppName(int pID)
    {
        String processName = "";
        ActivityManager am = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
        List l = am.getRunningAppProcesses();
        Iterator i = l.iterator();
        PackageManager pm = this.getPackageManager();
        while(i.hasNext()) 
        {
              ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo)(i.next());
              try 
              { 
                  if(info.pid == pID)
                  {
                      CharSequence c = pm.getApplicationLabel(pm.getApplicationInfo(info.processName, PackageManager.GET_META_DATA));
                      //Log.d("Process", "Id: "+ info.pid +" ProcessName: "+ info.processName +"  Label: "+c.toString());
                      //processName = c.toString();
                      processName = info.processName;
                  }
              }
              catch(Exception e) 
              {
                    //Log.d("Process", "Error>> :"+ e.toString());
              }
       }
        return processName;
    }