如何获取已安装应用程序的权限

9

我需要开发一个安卓应用程序来检测恶意软件。

我想根据所有已安装应用所使用的权限来开发此应用。请告诉我如何识别其他应用程序使用的权限。

2个回答

26

您可以通过以下方式获取所有已安装应用程序的权限。

  • 获取所有已安装的应用程序
  • 迭代每个应用程序
  • 获取每个应用程序的权限列表
  • 迭代每个权限
PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo applicationInfo : packages) {
   Log.d("test", "App: " + applicationInfo.name + " Package: " + applicationInfo.packageName);

   try {
      PackageInfo packageInfo = pm.getPackageInfo(applicationInfo.packageName, PackageManager.GET_PERMISSIONS);

      //Get Permissions
      String[] requestedPermissions = packageInfo.requestedPermissions;

      if(requestedPermissions != null) {
         for (int i = 0; i < requestedPermissions.length; i++) {
            Log.d("test", requestedPermissions[i]);
         }
      }
   } catch (NameNotFoundException e) {
      e.printStackTrace();
   }
}

在什么情况下packageInfo.requestedPermissions会为空? - Anubian Noob
@AnubianNoob http://developer.android.com/reference/android/content/pm/PackageInfo.html#requestedPermissions。引用自该网页:“所有包含在<manifest>下的<uses-permission>标签数组,如果没有则为null。” - evilone
好的,谢谢。我以为它会返回一个空数组,看来不是这样。 - Anubian Noob

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接