【问题标题】:Android M: Can you programatically get the full set of permissions an app would like? [closed]Android M:您能否以编程方式获得应用所需的全部权限? [关闭]
【发布时间】:2016-01-15 11:23:20
【问题描述】:

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

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

【问题讨论】:

  • 你的问题不清楚,你能澄清一下你在找什么吗?
  • 你可以得到全套。但用户始终可以使用 alt-tab 键并撤销他之前授予您的一些权限,并随意切换它们。
  • “这显示了如何获取当前授予的集合”——我希望GET_PERMISSIONS 会返回清单中的所有内容,无论用户是否授予它们。 The requestedPermissions field 记录为“此列表包括所有请求的权限,即使是那些在安装时系统未授予或已知的权限。”单独的requestedPermissionsFlags 具有授权状态。你有相反的证据吗?
  • 我没有任何证据,只是在 M 和 pre-M 设备上尝试了各种测试。你说的很对,谢谢。

标签: android permissions android-6.0-marshmallow


【解决方案1】:

正如@CommonsWare 评论的那样,PackageInfo.requestedPermissions 包含一个 <manifest> 下包含的所有 <uses-permission> 标记的数组,如果没有,则为 null。”

我已经在运行 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) {
}

【讨论】:

    【解决方案2】:

    adb shell dumpsys package packagename 会给你应用程序请求的权限信息packagename

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-10
      • 2016-12-15
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      相关资源
      最近更新 更多