检查android上的运行时权限

时间:2016-06-28 06:45:25

标签: android android-6.0-marshmallow android-permissions

我使用ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION);检查我的应用是否具有位置权限。此方法返回PackageManager.PERMISSION_GRANTED,这是正确答案。现在我转到我的应用设置并禁用位置permision.Now上述方法也会返回PackageManager.PERMISSION_GRANTED。但它应该PackageManager.PERMISSION_DENIED。任何人都可以在这个问题上给我一些想法吗?如果我可以使用另一种方法是什么?

2 个答案:

答案 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。阅读所有评论。