Android之获取安装应用和进程的相关信息

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



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值