1、获取安装应用的信息
appInfoList = new ArrayList<AppInfo>();
//获取包管理者
PackageManager pm = context.getPackageManager();
//获取所有安装在手机上应用的相关信息
List<PackageInfo> packageInfoList = pm.getInstalledPackages(0);
for (PackageInfo packageInfo : packageInfoList) {
AppInfo appInfo = new AppInfo();
//包名
appInfo.packageName = packageInfo.packageName;
//应用名
ApplicationInfo applicationInfo = packageInfo.applicationInfo;
appInfo.name = applicationInfo.loadLabel(pm).toString();
//图标
appInfo.icon = applicationInfo.loadIcon(pm);
//判断是否是系统应用
if((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == ApplicationInfo.FLAG_SYSTEM){
//系统应用
appInfo.isSystem = true;
}else{
//用户应用
appInfo.isSystem = false;
}
//判断安装位置
if((applicationInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) == ApplicationInfo.FLAG_EXTERNAL_STORAGE){
//sd卡应用
appInfo.isSdcard = true;
}else{
//手机应用
appInfo.isSdcard = false;
}
appInfoList.add(appInfo);
}
return appInfoList;
2、获取进程的相关信息
List<ProcessInfo> processInfoList = new ArrayList<ProcessInfo>();
//获取ActivityManager对象和PackageManager
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
PackageManager pm = context.getPackageManager();
List<RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();
for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses) {
ProcessInfo processinfo = new ProcessInfo();
//进程名 == 应用的包名
processinfo.packageName = runningAppProcessInfo.processName;
//获取进程占用内存的大小
android.os.Debug.MemoryInfo[] memoryInfos = am.getProcessMemoryInfo(new int[]{runningAppProcessInfo.pid});
//获取索引为0的值,返回MemoryInfo对象
android.os.Debug.MemoryInfo memoryInfo = memoryInfos[0];
//获取占用内存的值
processinfo.memorySize = memoryInfo.getTotalSharedDirty()/1024;//转换单位
//获取名称
try {
ApplicationInfo applicationInfo = pm.getApplicationInfo(runningAppProcessInfo.processName, 0);
processinfo.name = applicationInfo.loadLabel(pm).toString();
processinfo.icon = applicationInfo.loadIcon(pm);
//判断是否是系统进程
if((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == ApplicationInfo.FLAG_SYSTEM){
processinfo.isSystem = true;
}else{
processinfo.isSystem = false;
}
} catch (Exception e) {
processinfo.name = runningAppProcessInfo.processName;
processinfo.icon = context.getResources().getDrawable(R.drawable.ic_launcher);
processinfo.isSystem = true;
e.printStackTrace();
}
processInfoList.add(processinfo);
}
return processInfoList;
另:
//常见的信息维护成0
//获取签名文件 PackageManager.GET_SIGNATURES
//PackageManager.GET_UNINSTALLED_PACKAGES 卸载完的应用的残余文件
List<PackageInfo> PackageList = pm.getInstalledPackages(PackageManager.GET_SIGNATURES + PackageManager.GET_UNINSTALLED_PACKAGES);