首先也是要建立一个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;}@Overridepublic 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<TaskInfo>getTaskInfo(Context context){List<TaskInfo> list = new ArrayList<TaskInfo>();ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);PackageManager pm = context.getPackageManager();List<RunningAppProcessInfo> 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

android项目获得所有运行程序相关推荐

  1. Android实现开机自动运行程序

    有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内容的后台service.怎样实现开机自动运行的应用?在撰写本文时,联想到高焕堂先生以"Don't call me, I'll c ...

  2. Android开发遇到eclipse运行程序时报timeout

    运行的时候总是提示这样 Failed to install ***.apk on device 'emulator-5554': timeout Launch canceled! 第一次遇到这样的问题 ...

  3. Android项目目录结构

    在 Eclipse 中新建或者打开一个 Android 项目,可以看到目录视图如下所示: 其实项目开发中,使用频率较高的并不多,我们只要了解清楚不同类型的文件和不同目录的对应关系就可以了. 1. sr ...

  4. Android项目该如何选择targetSdkVersion

    新手的第一个Android项目或许没有认真考虑过如何选择targetSdkVersion的问题,也或许还有一部分像TeachCourse一样的开发者,积累一些工作经验后才回头来思考这个问题.那么该如何 ...

  5. Android Studio 点击运行总是debug

    今天遇见个奇葩问题,Android studio一点击运行程序按钮,就会安装并进入debug模式,还巨卡 后来发现,先把手机的开发者模式,关了再打开就行了 在在后来发现,原来是开发者选项的等待调试打开 ...

  6. Android项目 Eclipse 引入其他项目 打包出现 Rejecting re-init on previously-failed class 错误

    编译时没有报错,运行时报了Rejecting re-init on previously-failed class错误 我的原因:导入其他项目时,使用的是Java Build Path 结果运行时找不 ...

  7. 为什么Android项目mainactivity中有一个变量R_安卓4:第一个安卓程序 AS 安卓项目结构解析 手机运行app 模拟器运行app...

    学习于:https://www.bilibili.com/video/av22836860?p=2 首先,要知道AS的一个基本模型,1个Android project可以有多个module,而每个mo ...

  8. 为什么Android项目mainactivity中有一个变量R_【Android开发入门教程】二.Android应用程序结构分析!...

    一.新建HelloWorld项目: 1.打开Eclipse,点击"File"->"New"->"Project"-Android ...

  9. Android ADT插件更新后程序运行时抛出java.lang.VerifyError异常解决办法

    当我把Eclipse中的 Android ADT插件从21.1.0更新到22.0.1之后,安装后运行程序抛出java.lang.VerifyError异常. 经过调查,终于找到了一个有效的解决办法: ...

最新文章

  1. bootstrap 全局 CSS 样式
  2. 005_Queue消息模式发送字节消息
  3. Cstring转化为String
  4. C语言实现希尔排序shell sort算法之二(附完整源码)
  5. [vue] EventBus注册在全局上时,路由切换时会重复触发事件,如何解决呢?
  6. okHttp源码解析------待续
  7. 怎样清空输入缓冲区里的内容
  8. C++学习之路 | PTA乙级—— 1030 完美数列 (25 分)(精简)
  9. 卷积(convolution)与相关(correlation)(matlab 实现)
  10. 微信小程序开发之视频video组件报错:渲染层网络层错误
  11. Metro风格的CSS框架 BootMetro
  12. 微信小程序 环形进度条_微信小程序实现圆形进度条
  13. vue判断什么手机打开网页及是否用QQ浏览器或者微信浏览器打开
  14. IDEA之非常复制黏贴
  15. 硅原子重组纳米级芯片构想
  16. latex 跳转标签_在 LaTeX 中使用交叉引用
  17. 【Asp.net入门01】动态网站基础知识
  18. redis3.0.7 cluster 集群部署
  19. app应用关键词排名都有哪些因素?
  20. IBM带库加磁带操作

热门文章

  1. 微信小程序引入字体图标
  2. Linux虚拟机基本操作
  3. 畅通工程//最小生成树prim
  4. C#静态类 静态方法与非静态方法比较
  5. iOS 下配置XMPP 服务器openfire详解
  6. 最新行政区划编码数据
  7. Generic Data Access Objects -范型DAO类设计模式
  8. 关于WinForm的博客推荐
  9. 学习使用资源文件[11] - DLL 中的资源文件
  10. malloc()与calloc区别【转】