Android M使用permission_groups请求权限

时间:2015-06-08 23:20:58

标签: android permissions android-6.0-marshmallow

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

当我第一次尝试使用checkSelfPermission(即permission_groupManifest.permission_group.CAMERA时,可以预见我得到PackageManager.PERMISSION_DENIED

然后尝试requestPermissions同样的permission_group并且我不会弹出任何类型的对话框。 ' onRequestPermissionsResult'立即返回-1

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

问题checkSelfPermissionrequestPermission是否应该与Manifest.permission.*Manifest.permission_group.*一起使用,但是我应该有一个错误文件,因为它不会显示请求?或者这是故意的设计?

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

1 个答案:

答案 0 :(得分:24)

  

当我尝试在第一次启动时使用permission_group(即Manifest.permission_group.CAMERA)检查SelfPermission时,可以预见我得到了PackageManager.PERMISSION_DENIED。

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

  

然后尝试为同一个permission_group请求权限,我没有弹出任何类型的对话框。 'onRequestPermissionsResult'立即返回-1。

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

  

checkSelfPermission和requestPermission是否适用于Manifest.permission。*

  

和Manifest.permission_group。*

没有

  

或者这是故意的设计?

据推测,是的。至少在checkSelfPermission()上,它会覆盖其他预先存在的方法,这些方法可以追溯到API级别1并处理权限,而不是权限组。

  

当我只需要请求permission_group

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

API表明谷歌正在为这些行动敞开大门。实际上,权限组的内容是UX的决定,而不是技术决定。