私の質問:processName
が指定された特定のプロセスのpackageName
またはPID
を取得するために何を使用できますか?
私のタスクマネージャーでは、killBackgroundProcessesコードを使用してPIDを使用してプロセスを強制終了したかったためです。問題は、それを行うにはpackageName/processNameが必要であり、PIDだけを入力するのではなく、processNameを入力するようにユーザーに要求した場合、ユーザーにとってそのような面倒なことです。
これが私のタスクマネージャの画像です:
こんにちは、このコードを使用できます。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;
}
このコードは、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 "";
}
他のプロセスを強制終了することは一般的に悪い考えです。
この質問を見てください Android process killer および Android task kill ..
また、このブログ Android:processid(pid)とパッケージ名で実行中のプロセスを強制終了する
そしてあなたの質問のためにpidからプロセス名を取得する方法
何かのようなもの、
ターミナルエミュレータ をインストールし、起動して実行します。
ps | grep 10058
psは、必要なIDのプロセスとgrepフィルターをリストします。
ただし、これは、コマンドを実行するときにアプリケーションが実行されている場合にのみ機能します。