Android M 请求权限permission_groups

Android M requesting permissions with permission_groups

Android M Preview docs 向我们展示了如何使用新的权限模型检查和请求权限。在下图中,它向我们展示了一组权限组及其关联的权限。

当我尝试在第一次启动时使用 permission_group(即 Manifest.permission_group.CAMERAcheckSelfPermission,可以预见我会得到 PackageManager.PERMISSION_DENIED

然后尝试 requestPermissions 以获得相同的 permission_group,但我没有弹出任何类型的对话框。 'onRequestPermissionsResult'returns立即与-1

当我用 Manifest.permission.Camera 尝试相同的序列时 - 事情似乎正常进行。但是对于我制作的一个简单的应用程序,我需要录制带有音频的视频,并且请求两个单独的权限,CAMERAMICROPHONE(又名 RECORD_AUDIO)似乎是糟糕的设计。

问题checkSelfPermissionrequestPermission 是否应该与 Manifest.permission.*Manifest.permission_group.* 一起工作,但是有一个错误我应该提交,因为它不会显示请求?还是故意设计的?

*注意 - 我知道我可以自己创建一个具有多个权限的 requestPermissions(String[], int) 字符串数组,但 id 仍然有很多 if 语句来检查我需要的权限组合和将它们作为一个组来请求,当我 应该 只需要请求一个 permission_group

When I try to to checkSelfPermission with a permission_group (ie Manifest.permission_group.CAMERA) on first start, predictably I get PackageManager.PERMISSION_DENIED.

那是因为 checkSelfPermission() 检查的是权限,而不是权限组。

Then try to requestPermissions for that same permission_group and i don't get any type of dialog to pop up. 'onRequestPermissionsResult' returns immediately with -1.

这是因为 requestPermissions() 使用权限,而不是权限组。

Is checkSelfPermission and requestPermission supposed to work with Manifest.permission.*

是的。

and Manifest.permission_group.*

没有

Or was this intentional design?

大概是的。至少在 checkSelfPermission() 上,它位于其他可追溯到 API 级别 1 的现有方法之上,并处理权限,而不是权限组。

when i should only need to request a permission_group

您对 Android 的未来所做的假设可能并不准确。现在,在 M 之前,权限组并不是特别重要,权限才是最重要的。在 M 中,权限组的重要性攀升,因为这就是 M 在向最终用户展示用户可以控制的内容时使用的内容。但是,此后的 Android 版本可能会提供更精细的粒度,无论是针对个人用户还是通过策略针对企业,这可能会回到权限。

API 表明 Google 正在为这些类型的移动敞开大门。实际上,权限组的东西是一个用户体验决定,而不是技术决定。