Android的 – 如何通过使用PID获取processName或packageName?
我的问题:我可以使用什么来检索给定PID
的某个进程的processName
或packageName
?
由于在我的任务pipe理器中,我想在使用killBackgroundProcesses代码杀死进程的同时使用PID。 问题是我需要packageName / processName来做到这一点,如果我要求他们键入processName,而不是只inputPID,那对用户来说会是一个麻烦。
这里是我的任务pipe理器的形象:
你好,你可以使用这个代码,它适用于我在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。
但是,只有在运行该命令的应用程序正在运行时才有效。