web-dev-qa-db-ja.com

Android-PIDを使用してprocessNameまたはpackageNameを取得する方法?

私の質問:processNameが指定された特定のプロセスのpackageNameまたはPIDを取得するために何を使用できますか?

私のタスクマネージャーでは、killBackgroundProcessesコードを使用してPIDを使用してプロセスを強制終了したかったためです。問題は、それを行うにはpackageName/processNameが必要であり、PIDだけを入力するのではなく、processNameを入力するようにユーザーに要求した場合、ユーザーにとってそのような面倒なことです。

これが私のタスクマネージャの画像です:

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

17
Loren

こんにちは、このコードを使用できます。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;
}
13
Yaqub Ahmad

このコードは、Yaqubのコードを簡略化したものです。これをUtilクラスの静的メソッドとして使用します。

public static String getAppNameByPID(Context context, int pid){
    ActivityManager manager 
               = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

    for(RunningAppProcessInfo processInfo : manager.getRunningAppProcesses()){
        if(processInfo.pid == pid){
            return processInfo.processName;
        }
    }
    return "";
}
19
Jeremy C

他のプロセスを強制終了することは一般的に悪い考えです。

この質問を見てください Android process killer および Android task kill ..

また、このブログ Android:processid(pid)とパッケージ名で実行中のプロセスを強制終了する

そしてあなたの質問のためにpidからプロセス名を取得する方法

何かのようなもの、

ターミナルエミュレータ をインストールし、起動して実行します。

ps | grep 10058

psは、必要なIDのプロセスとgrepフィルターをリストします。

ただし、これは、コマンドを実行するときにアプリケーションが実行されている場合にのみ機能します。

2
user370305