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