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) {
}
这与应用当前获得的授权不同 - 这可能是它想要的全部授权的子集。
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) {
}