Android的 – 如何通过使用PID获取processName或packageName?

我的问题:我可以使用什么来检索给定PID的某个进程的processNamepackageName

由于在我的任务pipe理器中,我想在使用killBackgroundProcesses代码杀死进程的同时使用PID。 问题是我需要packageName / processName来做到这一点,如果我要求他们键入processName,而不是只inputPID,那对用户来说会是一个麻烦。

这里是我的任务pipe理器的形象:

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

你好,你可以使用这个代码,它适用于我在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程序杀手和android任务kill

还有这个博客Android:用processid(pid)和包名称杀死一个正在运行的进程

并为您的问题如何从pid获取进程名称然后

就像是,

安装terminal模拟器 ,启动它并运行:

 ps | grep 10058 

ps列出你想要的ID的进程和grepfilter。

但是,只有在运行该命令的应用程序正在运行时才有效。