2011-12-17 4 views
15

ご質問:PIDの特定のプロセスのprocessNameまたはpackageNameを取得するにはどうすればよいですか?Android - PIDを使用してprocessNameまたはpackageNameを取得するにはどうすればよいですか?

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

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

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

+1

ない、おそらくあなたのタスクマネージャの最終版ではユーザーが殺すためにどのアプリを選択する]をクリックしてみましょう、またはチェックボックスを使用したい:私はUtilクラスの静的メソッドとしてこれを使用します。彼らにPIDを入力させることは余分な不要なステップのように思えます。 –

+0

うん、それは私の理想的な計画だ。しかし、私はチェックボックスを使用する方法や、まだメソッドを選択するためにクリックする方法がわかりません。だからこそ私はこの方法を最初にしたのです。しかし、あなたがそれを行う方法についてのアイデアを持っているなら、それは本当に私を助けてくれるでしょう。 :D – Loren

+1

[ListView](http://developer.android.com/reference/android/widget/ListView.html)を試してみるか、チェックボックスにチュートリアル[here](http:// www。 anddev.org/checkbox_text_list___extension_of_iconified_text_tutorial-t771.html)。 –

答えて

10

こんにちはあなたはこのコードを使用することができ、それは、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; 
} 
+0

ありがとうございます。私はAndroidに精通しているわけではないし、何かをプログラムしてからずっとずっと続いているので、最初にそれを理解しようとしているだけだ。 :) – Loren

+0

Log.dは何をしているのですか? – Loren

+0

ログウィンドウ(Log.d)については、次を参照してください。 http://stackoverflow.com/questions/4584103/log-in-android-development –

2

キル他のプロセス一般的に悪い考えです。..この質問Android process killerandroid task kill

ルック..

そしてまた、このブログAndroid: Killing a running process with processid(pid) and package name

あなたの質問

その後、PIDからプロセス名を取得するために何かのように、

terminal emulatorをインストールし、それを起動して実行します。

ps | grep 10058 

psのは、あなたがしたいIDのためのプロセスとgrepフィルタを示しています。

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

+0

うん、私はそれを何度か読んだ。しかし、それは私たちのクラスのプロジェクトなので、私はその要件に従う以外に選択肢はありません。助けてくれてありがとう。 – Loren

+1

端末で 'grep not found'を取得しました – Gabor

+0

Androidのコンソールに' grep'があります。Android 4.4 CyanogenMod – dazito

19

このコードはYaqubのコードの簡易版です。あなたが尋ね

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 ""; 
} 
+0

申し訳ありませんが、私はあなたのポイントを取得しません。この関数に渡すpidは、RunningAppProcessInfoオブジェクトこの関数に渡して、実行中のすべてのアプリケーションのリストを再び取得すると、RunningAppProcessInfoオブジェクトi、processInfo.processNameからプロパティを直接呼び出すことができます – Naveed

関連する問題