检查android上的运行时权限
我使用了检查android上的运行时权限,android,android-6.0-marshmallow,android-permissions,Android,Android 6.0 Marshmallow,Android Permissions,我使用了ContextCompat.checkSelfPermission(这是Manifest.permission.ACCESS\u FINE\u位置)检查我的应用是否具有位置权限。此方法返回PackageManager.permission\u Grated,这是正确答案。现在我转到我的应用设置并禁用位置权限。现在,上述方法还返回PackageManager.permission\u Grated。但是它应该PackageManager.PERMISSION\u DENIED。有人能告诉我
ContextCompat.checkSelfPermission(这是Manifest.permission.ACCESS\u FINE\u位置)
检查我的应用是否具有位置权限。此方法返回PackageManager.permission\u Grated
,这是正确答案。现在我转到我的应用设置并禁用位置权限。现在,上述方法还返回PackageManager.permission\u Grated
。但是它应该PackageManager.PERMISSION\u DENIED
。有人能告诉我一些关于这件事的想法吗?如果我可以使用另一种方法,请求权限是什么?
if (checkSelfPermission(Manifest.permission.CAMERA)
== PackageManager.PERMISSION_DENIED) {
requestPermissions(new String[]{Manifest.permission.CAMERA}, YOUR_REQUEST_CODE);
}
若要检查用户是否已接受您的请求,请覆盖以下代码
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case YOUR_REQUEST_CODE: {
if (checkSelfPermission(Manifest.permission.CAMERA) ==
PackageManager.PERMISSION_GRANTED){
// permission was granted
} else {
// permission denied
//Disable the functionality
//that depends on this permission.
}
return;
}
}
}
参考:根据您的评论,目标sdk是22。因此,
checkSelfPermission
方法总是将权限作为已授予的
授予。如果要实现运行时权限,必须将其更改为23
如果你想要详细的答案。阅读所有评论 您确定正在使用棉花糖设备吗?您正在onCreate或OnResume中检查此状态。您可以发布代码吗?我是说,onRequestPermissionsResult的代码。@ankit是的,我正在使用marshmalowdevice@vishal我在onCreate中检查了此状态。有什么问题吗?我也在使用此代码。但在从应用程序设置禁用权限后,它将返回PackageManager.permission_grated。禁用后,它应该是PackageManager.permission_DENIED。不是吗?在您的activity OnResume方法执行checkSelfPermission()并告诉我结果