Android针对5.0前后获取所有进程和App信息
来源:互联网 发布:人工智能利与弊演讲ppt 编辑:程序博客网 时间:2024/05/29 15:07
- Android50版本后对权限的控制更为严格以下是两个获取应用信息的小demo
- Android50以后获取所有进程信息
- Android50以前获取所有进程信息
Android5.0版本后对权限的控制更为严格,以下是两个获取应用信息的小demo
1.Android5.0以后获取所有进程信息
下载Github提供的开源5.0以后获取系统进程权限的项目
LZ下载的app_process_library.jar
/** * 5.0系统以上获取运行的进程方法 * * @param context * @param handler */ public static void getProcesses(final Context context, final ProcessManagerActivity.ProcessHandler handler) { new Thread() { public void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } ActivityManager am = PackageUtils.getActivityManager(context); PackageManager pm = PackageUtils.getPackageManager(context); List<Object> list = new ArrayList<>(); List<ProcessInfo> userProcessList = new ArrayList<>(); List<ProcessInfo> sysProcessList = new ArrayList<>(); List<AndroidAppProcess> runningAppProcesses = ProcessManager.getRunningAppProcesses(); if (runningAppProcesses != null && runningAppProcesses.size() > 0) { for (AndroidAppProcess appProcess : runningAppProcesses) { ProcessInfo processInfo = new ProcessInfo(); processInfo.pid = appProcess.pid;//进程id processInfo.processName = appProcess.name;//进程名 int flags = 0; //按包名获取功能清单变量。因为不涉到四大组件 try { PackageInfo packageInfo = pm.getPackageInfo(appProcess.name, flags); processInfo.icon = packageInfo.applicationInfo.loadIcon(pm);//图标 processInfo.name = packageInfo.applicationInfo.loadLabel(pm).toString();//应用名称 if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == ApplicationInfo.FLAG_SYSTEM) { processInfo.isSystemProcess = true;// 是系统进程 sysProcessList.add(processInfo); } else { processInfo.isSystemProcess = false; userProcessList.add(processInfo); } } catch (PackageManager.NameNotFoundException e) { //info.processName不等于包名才找不到 e.printStackTrace();//1.系统进程 2.配置process变量的进程 //针对进程名不等于包名,可以使用小机器人填充 processInfo.icon = context.getResources().getDrawable(R.drawable.ic_default); processInfo.name = appProcess.name;// //其它默认为系统 sysProcessList.add(processInfo); } //增加一个应用内存的查询 ,针对每一个进程 //am.getProcessMemoryInfo(pids);查询指定一个进程的内存使用情况(跑跑卡丁车 100M) //因为传入的是一个pid返回数组的话 长度为1 ,此时使用0下标来获取数据 Debug.MemoryInfo memoryInfo = am.getProcessMemoryInfo(new int[]{processInfo.pid})[0]; processInfo.memory = memoryInfo.getTotalPss() * 1024; //getTotalPss()获取进程的使用内存情况获取 long字节数 //processInfo.memory = memoryInfo.getTotalPss() * 1024; } //添加标题 list.add("用户进程(" + userProcessList.size() + ")"); list.addAll(userProcessList); list.add("系统进程(" + sysProcessList.size() + ")"); list.addAll(sysProcessList); //5.4.通知界面进程显示 Message msg = new Message(); msg.obj = list; msg.what = Constants.PROCESS_INFO_SUCCESS; handler.sendMessage(msg); } } }.start(); }
2.Android5.0以前获取所有进程信息
public static void getProcessInfos(final Context context, final ProcessManagerActivity.ProcessHandler handler) {
new Thread() {
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
//调用查询方法获取进程列表
List
0 0
- Android针对5.0前后获取所有进程和App信息
- Android--获取手机所有APP信息
- 获取所有app的信息
- Android获取所有安装APP信息的详细代码
- 获取android正在运行的所有app进程
- Android开发之获取系统所有进程信息。
- android 获取app信息
- Android获取手机信息和APP信息大全
- iOS 获取手机所有app信息
- 获取设备上所有系统app信息
- LINUX下获取所有进程信息
- 获取系统中所有进程&线程信息
- 获取android所有联系人信息
- android获取所有联系人信息
- 获取android所有联系人信息
- Android获取App版本信息
- Android 获取App相关信息
- android获取app版本信息
- mac使用基本操作过关卡
- 守护进程介绍
- NLP+语篇分析(五)︱中文语篇分析研究现状(CIPS2016)
- matlab杂记2概率统计
- python range函数
- Android针对5.0前后获取所有进程和App信息
- HDU1058 Humble Numbers , dp(数组有序特性)
- SpringBoot 整合 SpringData 入门案例(一)
- Java多线程系列-Semaphore
- C语言
- 人生不能等待
- 编程书籍阅读随谈(第二篇)
- Java初学中遇到的几个问题
- spark 性能调优