android项目获得所有运行程序
2015-12-11 20:48
459 查看
首先也是要建立一个javabean
然后通过activitymanager来获取运行中程序的list集合
通过遍历集合获得包名,
在通过packagemanager和包名来获得其他信息
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<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; } }
相关文章推荐
- android 扫描手机内存和SD卡,获取手机的视频、音频文件。把获取不到的文件扫描出来
- Android中Activity的初步接触(二)
- android项目得到进程数量,运行内存和剩余运行内存
- 【MDCC 2015】开源选型之Android三大图片缓存原理、特性对比
- Android读书计划
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- Android手势识别之GestureDetector
- Android开机启动Activity或者Service方法
- Android使用AIDL传递对象
- Android Push Notifications using Google Cloud Messaging (GCM), PHP and MySQL
- android中OptionMenu和ContextMenu创建
- Facebook Messenger crash . android.os.BadParcelableException: ClassNotFoundException when unmarshall
- Android和JavaScript相互调用初学
- Android中添加书签(浏览器的收藏)
- Activity之间的跳转及销毁所有Activity的正确姿势
- 【Android】开源 闲暇(Leisure) 阅读类应用的开发
- Android学习笔记——广播机制
- Android 获取播放视频的相关 内容,  分辨率, 方向,作者信息
- Android源码分析:AudioFlinger中的线程
- android利用FTP实现文件共享