【问题标题】:How can I search applicationinfo by permissions?如何按权限搜索应用程序信息?
【发布时间】:2015-06-02 12:29:53
【问题描述】:
我想显示安装在用户设备上的应用程序列表,这些应用程序对其清单文件具有互联网权限,目前我正在使用以下代码获取所有应用程序:
PackageManager packageManager = mainActivity.getPackageManager();
apps = packageManager.getInstalledApplications(0);
Collections.sort(apps, new ApplicationInfo.DisplayNameComparator(packageManager));
【问题讨论】:
标签:
android
android-manifest
android-applicationinfo
【解决方案1】:
使用getInstalledPackages() 代替getInstalledApplications(),包括GET_PERMISSIONS 中的flags。对于那些请求权限的包,生成的 PackageInfo 对象将填充一个 permissions 字段。 permissions 将是一个PermissionInfo[],而PermissionInfo 有一个name 字段,您可以检查它是否符合您所需的权限。这样的事情应该可以工作:
for (PackageInfo pkg : mgr.getInstalledPackages(PackageManager.GET_PERMISSIONS)) {
for (PermissionInfo perm : pkg.permissions) {
if (Manifest.permission.INTERNET.equals(perm.name)) {
// do something
}
}
}