我想知道当用户按下“允许”按钮以访问联系人详细信息/日历访问等时,是否有一种方法可以识别事件,
我知道有一种方法可以使用 ActivityCompat.requestPermissions 请求权限,但是有没有一种方法可以在用户授予权限后立即执行操作?
原文由 Katakam Nikhil 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想知道当用户按下“允许”按钮以访问联系人详细信息/日历访问等时,是否有一种方法可以识别事件,
我知道有一种方法可以使用 ActivityCompat.requestPermissions 请求权限,但是有没有一种方法可以在用户授予权限后立即执行操作?
原文由 Katakam Nikhil 发布,翻译遵循 CC BY-SA 4.0 许可协议
我为此目的使用了这段代码。
public boolean isPermissionGranted() {
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.CAMERA)
== PackageManager.PERMISSION_GRANTED) {
Log.v(TAG, "Permission is granted");
return true;
} else {
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.CAMERA
}, 1);
return false;
}
} else { //permission is automatically granted on sdk<23 upon installation
Log.v(TAG, "Permission is granted");
return true;
}
}
然后你可以打电话:
if(isPermissionGranted())
{
// do your stuff
}
原文由 MezzDroid 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答953 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
1 回答834 阅读✓ 已解决
2 回答943 阅读
2 回答882 阅读
1 回答817 阅读
1.2k 阅读
首先定义变量:
请求权限使用:
现在使用以下方法捕获结果:
对于片段
如果您在
fragment
中尝试此代码,请更改checkSelfPermission()
到
ActivityCompact.checkSelfPermission()
并且也改变
ActivityCompat.requestPermissions()
到
requestPermissions()
权限结果的处理(允许或拒绝)与活动相同。
有关更完整的示例,请 在此处查看此答案