Android M:您能否以编程方式获得应用所需的全套权限?

Android M: Can you programatically get the full set of permissions an app would like?

这与应用当前获得的授权不同 - 这可能是它想要的全部授权的子集。

This展示了如何获取当前授予的集合。在 Android M 之前,那是完整的集合,因为除非用户授予了所有它想要的,否则不会安装它。然而,在 Android M 下,用户可以选择授予哪个,并在安装后随时更改。我想要应用清单中列出的全套应用程序。

adb shell dumpsys package packagename 将为您提供应用 packagename

请求的权限信息

正如@CommonsWare 评论的那样,PackageInfo.requestedPermissions 包含一个 "Array of all <uses-permission> tags included under <manifest>, or null if there were none."

我已经在设备 运行 Android M 上测试了这个,我得到的输出包括来自所有 <uses-permission> 标签的权限,无论这些权限是否已被授予或没有,正如预期的那样。

一个测试这个的最小例子:

try {
    PackageInfo pi = getPackageManager().getPackageInfo("com.example.foo", PackageManager.GET_PERMISSIONS);
    for (String perm : pi.requestedPermissions) {
        Log.e("Foo", perm);
    }
} catch (Exception e) {
}