博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android项目获得所有运行程序
阅读量:6969 次
发布时间:2019-06-27

本文共 3470 字,大约阅读时间需要 11 分钟。

首先也是要建立一个javabean

package com.itheima.bean;import android.graphics.drawable.Drawable;public class TaskInfo {    private Drawable icon;    private String name;    private String size;    private boolean isUser;    public Drawable getIcon() {        return icon;    }    public void setIcon(Drawable icon) {        this.icon = icon;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getSize() {        return size;    }    public void setSize(String size) {        this.size = size;    }    public boolean isUser() {        return isUser;    }    public void setUser(boolean isUser) {        this.isUser = isUser;    }    @Override    public String toString() {        return "TaskInfo [name=" + name + ", size=" + size                + ", isUser=" + isUser + "]";    }}

然后通过activitymanager来获取运行中程序的list集合

通过遍历集合获得包名,

在通过packagemanager和包名来获得其他信息

package com.itheima.engine;import java.util.ArrayList;import java.util.List;import android.app.ActivityManager;import android.app.ActivityManager.RunningAppProcessInfo;import android.content.Context;import android.content.pm.ApplicationInfo;import android.content.pm.PackageManager;import android.content.pm.PackageManager.NameNotFoundException;import android.graphics.drawable.Drawable;import android.os.Debug.MemoryInfo;import android.text.format.Formatter;import com.itheima.bean.TaskInfo;import com.itheima.superman.R;public class TaskInfoProvider {    private static String packageName;    public static List
getTaskInfo(Context context){ List
list = new ArrayList
(); ActivityManager am = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); PackageManager pm = context.getPackageManager(); List
runningAppProcesses = am.getRunningAppProcesses(); for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses) { TaskInfo task = null; try { task = new TaskInfo(); packageName = runningAppProcessInfo.processName; //得到图标 Drawable loadIcon = pm.getPackageInfo(packageName, 0).applicationInfo.loadIcon(pm); task.setIcon(loadIcon); //得到名称 task.setName(pm.getPackageInfo(packageName, 0).applicationInfo.loadLabel(pm).toString()); //是不是用户程序 int flag = pm.getPackageInfo(packageName, 0).applicationInfo.flags; if((flag&ApplicationInfo.FLAG_SYSTEM)==0){ task.setUser(true); }else{ task.setUser(false); } //得要程序占用运行内存 MemoryInfo processMemoryInfo = am.getProcessMemoryInfo(new int[]{runningAppProcessInfo.pid})[0]; String size = Formatter.formatFileSize(context, processMemoryInfo.getTotalPrivateDirty()*1024); task.setSize(size); } catch (NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); //系统中有些程序是用C语言写的没有图标和名字 task.setIcon(context.getResources().getDrawable(R.drawable.ic_launcher)); task.setName(packageName); } list.add(task); } return list; }}

 

转载于:https://www.cnblogs.com/84126858jmz/p/5040188.html

你可能感兴趣的文章
vue 面试时需要准备的知识点
查看>>
rsync
查看>>
Algs4-1.5.20动态生长with linkList
查看>>
GAN实现半监督学习
查看>>
【小技巧】小图标和文字的居中对齐-小总结
查看>>
docker swarm英文文档学习-10-使用Docker密钥管理敏感数据
查看>>
driver_1_1
查看>>
LeetCode OJ - Single Number
查看>>
[模板] 计算几何2: 自适应Simpson/凸包/半平面交/旋转卡壳/闵可夫斯基和
查看>>
PHP 学习笔记---基本语法
查看>>
良序原理
查看>>
Android 数据库创建字段时的数据类型
查看>>
Spark入门实战系列-10章-18篇-含数据(转)
查看>>
Linux-安装MongoDB
查看>>
事件和委托
查看>>
css3颜色渐变
查看>>
PostgreSQL 学习手册-模式Schema
查看>>
系统性能瓶颈分析
查看>>
防止重复点击提交,仅提交一次的终极绝杀技[高清、有码]
查看>>
p2824 [HEOI2016/TJOI2016]排序
查看>>