如果我一个接一个地请求来自同一组的两个权限(Ex READ_CONTACTS,WRITE_CONTACTS)权限对话框要求用户两次接受来自同一组的权限,但文档提到我是否接受来自同一组的权限,android自动授予该组中的其他权限。
前代码:
ActivityCompat.requestPermissions((Activity) currentContext,
new String[]{Manifest.permission.READ_CONTACT},
MY_PERMISSIONS_REQUEST);
因为它应该工作,出现一个请求权限的对话框, 但是,如果我调用以下代码,它会再次出现
ActivityCompat.requestPermissions((Activity) currentContext,
new String[]{Manifest.permission.WRITE_CONTACT},
MY_PERMISSIONS_REQUEST);
所以来自同一组的权限对话框出现两次。 如果我以上述方式请求它们(即单独而不是一起),我是否可以只显示同一组的权限的单一对话框?
答案 0 :(得分:2)
文档说:
系统显示的对话框描述了您的权限组 应用程序需要访问;它没有列出具体的权限。对于 例如,如果您请求READ_CONTACTS权限,则系统 对话框只是说您的应用需要访问设备的联系人。 用户只需为每个权限授予一次权限 组。如果您的应用请求该群组中的任何其他权限(那个 在您的应用清单中列出),系统自动授予 他们。当您请求权限时,系统会调用您的权限 onRequestPermissionsResult()回调方法和传递 PERMISSION_GRANTED,与用户明确表示的方式相同 通过系统对话框授予您的请求。
这意味着只会为组显示一个警报,但您必须请求该组的每个权限。
因此,您应该同时请求多个权限:
ActivityCompat.requestPermissions((Activity) currentContext,
new String[]{Manifest.permission.READ_CONTACT, Manifest.permission.WRITE_CONTACT},
MY_PERMISSIONS_REQUEST);
修改强>
要检查是否已授予权限,您必须使用:
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// ...
}