MA QUESTION: Que pourrais-je utiliser pour récupérer le processName
ou packageName
d'un certain processus étant donné son PID
?
Étant donné que dans mon gestionnaire de tâches, je voulais utiliser le PID tout en utilisant le code killBackgroundProcesses pour tuer les processus. Le problème est que j'ai besoin du packageName/processName pour le faire et ce serait un problème pour l'utilisateur si je lui demandais de taper le processName plutôt que de simplement taper son PID.
voici l'image de mon gestionnaire de tâches:
Bonjour, vous pouvez utiliser ce code, il fonctionne pour moi dans 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;
}
Ce code est une version simplifiée du code de Yaqub. J'utilise ceci comme méthode statique dans une classe 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 "";
}
Tuer d'autres processus est généralement une mauvaise idée.
Regardez cette question tueur de processus Android et kill task Android ..
Et aussi ce blog Android: tuer un processus en cours avec processid (pid) et le nom du package
Et pour votre question Comment obtenir le nom du processus à partir de pid puis
Quelque chose comme,
Installez un émulateur de terminal , lancez-le et exécutez:
ps | grep 10058
ps répertorie les processus et les filtres grep pour l'ID souhaité.
Mais cela ne fonctionne que si l'application est en cours d'exécution lorsque vous exécutez la commande.