我使用ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION);
检查我的应用是否具有位置权限。此方法返回PackageManager.PERMISSION_GRANTED
,这是正确答案。现在我转到我的应用设置并禁用位置permision.Now上述方法也会返回PackageManager.PERMISSION_GRANTED
。但它应该PackageManager.PERMISSION_DENIED
。任何人都可以在这个问题上给我一些想法吗?如果我可以使用另一种方法是什么?
答案 0 :(得分:3)
申请许可
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;
}
}
}
参考:http://sourabhkarkal.com/blogspot/requesting-permissions-in-android-m/
答案 1 :(得分:1)
根据您的评论,目标sdk为22.因此方法checkSelfPermission
始终以Granted
为您提供权限。如果要实现运行时权限,则必须将其更改为23.
如果您想要详细解答,please refer SO question。阅读所有评论。