在API级别为23+的设备上请求权限时,文档说明您需要请求所需的每个权限,以防您从权限组请求权限您已经有权访问权限由系统授予。 Handle the permissions request response
但是,在将我的应用程序调整为目标API级别23时,我注意到为该组的一个代表请求权限就足够了 - 以下对来自同一组的其他权限的检查得到 PackageManager.PERMISSION_GRANTED 检查是否有权限。
例如,如果我请求 READ_CONTACTS 的许可,然后检查我是否有权使用 WRITE_CONTACTS ,答案是肯定的。
我在 Nexus 和 One Plus 设备上测试了我的代码更改,并开始发布该应用。
然后我开始看到 Fabric 的报告,其中唯一没有权限处理的设备是小米,问题是如何在这些设备上请求权限。
答案 0 :(得分:0)
解决方案是实际遵循文档中的准则并请求危险权限组中的所有权限,而不是要求一位代表。 (显然只有清单xml中列出的权限)
当发出具有来自同一组的多个权限的单个请求时,用户只能看到一个对话框。
我知道文档陈述here,这看起来更安全[/ p>]
任何权限都属于权限组,包括您的应用定义的普通权限和权限。但是,如果权限是危险的,则权限组仅影响用户体验。您可以忽略权限组以获得正常权限。
但到目前为止,我只针对小米实施了针对所有权限的特定请求,并且在从组中请求一个权限时,所有其他设备都正常工作。
<强>更新强> 根据{{3}},正确的行为是在小米中实现的方式 - 这是一个在 Oreo 中修复的错误