大佬教程收集整理的这篇文章主要介绍了Android M:如何获取所有进程UID?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我曾经通过获取通过getRunningAppProcesses()方法获得的uid来做到这一点.显然在Android M中已经更改为仅返回您的应用程序包名称,如here所示.
我的问题是:还有另一种方法来获取Android M中每个正在运行的进程的Name和UID吗?
以下是我之前如何做到这一点的示例,我想在Android M上重新创建此功能.
List<RunningAppProcessInfo> procInfos = activitymanager.getRunningAppProcesses(); PackageManager pm = context.getPackageManager(); for (int i = 0; i < procInfos.size(); i++) { try { String packagename = procInfos.get(i).processName; String appName = ""; try { appName = pm.getApplicationLabel( pm.getApplicationInfo(packagename,PackageManager.GET_Meta_DATA)) .toString(); } catch (NameNotFoundException E) { appName = ""; } int uid = procInfos.get(i).uid; long ulBytes = TrafficStats.getUidTxBytes(uid); long dlBytes = TrafficStats.getUidRxBytes(uid); // Do other stuff.
非常感谢任何帮助.谢谢!
PackageManager pm = context.getPackageManager(); Activitymanager am = (Activitymanager) getSystemservice(Context.ACTIVITY_serviCE); List<Activitymanager.RunningserviceInfo> runningservices = am.getRunningservices(Integer.max_value); for (Activitymanager.RunningserviceInfo service : runningservices) { String appName; try { appName = pm.getApplicationInfo(service.process,0).loadLabel(pm).toString(); } catch (PackageManager.NameNotFoundException E) { appName = null; } int uid = service.uid; long ulBytes = TrafficStats.getUidTxBytes(uid); long dlBytes = TrafficStats.getUidRxBytes(uid); }
文档说明这不适用于生产.我也没有做太多测试.如果不符合您的要求,请发表评论.我能想到的另一件事就是在sHell中解析运行ps的输出.
在sHell中解析ps的输出,我们可以获得当前正在运行的应用程序.例:
PackageManager pm = context.getPackageManager(); // Get the output of running "ps" in a sHell. // This uses libsuperuser: https://github.com/Chainfire/libsuperuser // To add this to your project: compile 'eu.chainfire:libsuperuser:1.0.0.+' List<String> stdout = SHell.SH.run("ps"); List<String> packages = new ArrayList<>(); for (String line : stdout) { // Get the process-name. it is the last column. String[] arr = line.split("\\s+"); String processName = arr[arr.length - 1].split(":")[0]; packages.add(processName); } // Get a list of all installed apps on the device. List<ApplicationInfo> apps = pm.geTinstalledApplications(0); // Remove apps which are not running. for (Iterator<ApplicationInfo> it = apps.iterator(); it.hasNext(); ) { if (!packages.contains(it.next().packageName)) { it.remove(); } } for (ApplicationInfo app : apps) { String appName = app.loadLabel(pm).toString(); int uid = app.uid; long ulBytes = TrafficStats.getUidTxBytes(uid); long dlBytes = TrafficStats.getUidRxBytes(uid); /* do your stuff */ }
以上是大佬教程为你收集整理的Android M:如何获取所有进程UID?全部内容,希望文章能够帮你解决Android M:如何获取所有进程UID?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。