PackageManager简介

/**
         * PackageManager介绍:
         * 本类API是对所有基于加载信息的数据结构的封装,包括以下功能: 
         * 安装,卸载应用 查询permission相关信息 查询Application相关
         * 信息(application,activity,receiver,service,provider及相应属性等)
         * 查询已安装应用 增加,删除permission 清除用户数据、缓存,代码段等 非查询相关的API需要特定的权限。
         * 主要包含了,安装在当前设备上的应用包的相关信息
         * 如下:获取已经安装的应用程序的信息
         */
        private HashMap<String, String> installPackagesInfo(){
                // 获取packageManager对象
                PackageManager packageManager = this.getPackageManager();
                /*getInstalledApplications 返回当前设备上安装的应用包集合
                 * ApplicationInfo对应着androidManifest.xml中的application标签。通过它可以获取该application对应的信息
                 */
                List<ApplicationInfo> applicationInfos = packageManager.getInstalledApplications(0);
                HashMap<String, String> resultMap = new HashMap<String, String>();
                Iterator<ApplicationInfo> iterator = applicationInfos.iterator();
                while(iterator.hasNext()){
                        ApplicationInfo applicationInfo = iterator.next();
                        String packageName = applicationInfo.packageName;// 包名
                        String packageLabel = packageManager.getApplicationLabel(applicationInfo).toString();//获取label
                        resultMap.put(packageLabel, packageName);
                }
                
                return resultMap;
                
        }


@只获取用户安装的应用程序(屏蔽系统应用的条件):

//得到PackageManager对象 

PackageManager pm = getPackageManager(); 

//得到系统安装的所有程序包的PackageInfo对象 

//List<ApplicationInfo> packs = pm.getInstalledApplications(0); 

List<PackageInfo> packs = pm.getInstalledPackages(0); 

for(PackageInfo pi:packs) 

{ 

HashMap<String, Object> map = new HashMap<String, Object>(); 

//显示用户安装的应用程序,而不显示系统程序 

// if((pi.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)==0&& 

// (pi.applicationInfo.flags&ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)==0) 

// { 

// //这将会显示所有安装的应用程序,包括系统应用程序 

// map.put("icon", pi.applicationInfo.loadIcon(pm));//图标 

// map.put("appName", pi.applicationInfo.loadLabel(pm));//应用程序名称 

// map.put("packageName", pi.applicationInfo.packageName);//应用程序包名 

// //循环读取并存到HashMap中,再增加到ArrayList上,一个HashMap就是一项 

// items.add(map); 

// } 

//这将会显示所有安装的应用程序,包括系统应用程序 

map.put("icon", pi.applicationInfo.loadIcon(pm));//图标 

map.put("appName", pi.applicationInfo.loadLabel(pm));//应用程序名称 

map.put("packageName", pi.applicationInfo.packageName);//应用程序包名 

//循环读取并存到HashMap中,再增加到ArrayList上,一个HashMap就是一项 

items.add(map); 

} 

 

@获取相应应用的权限:

PackageManager packageManager = getPackageManager();
		List<PackageInfo> list = packageManager
				.getInstalledPackages(PackageManager.GET_PERMISSIONS);
		StringBuilder stringBuilder = new StringBuilder();
		for (PackageInfo packageInfo : list) {
			stringBuilder.append("package name:" + packageInfo.packageName
					+ "\n");
			ApplicationInfo applicationInfo = packageInfo.applicationInfo;
			stringBuilder.append("应用名称:"
					+ applicationInfo.loadLabel(packageManager) + "\n");
			if (packageInfo.permissions != null) {
				for (PermissionInfo p : packageInfo.permissions) {
					stringBuilder.append("权限包括:" + p.name + "\n");
				}
			}

 

@获取最后一次安装时间:

allAppInfo.setLastInstal(pInfo.firstInstallTime);




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值