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);