检查 android 的运行时权限

Check runtime permission on android

我使用 ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION); 检查我的应用程序是否具有位置权限或 not.This 方法 returns PackageManager.PERMISSION_GRANTED 这是正确的 answer.Now 我转到我的应用程序的设置并禁用位置 permision.Now 以及上述方法 returns PackageManager.PERMISSION_GRANTED。但它应该 PackageManager.PERMISSION_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;
        }
    }
}

参考:http://sourabhkarkal.com/blogspot/requesting-permissions-in-android-m/

根据您的意见,目标 sdk 是 22。因此方法 checkSelfPermission 始终授予您 Granted 权限。如果要实现Runtime权限,就得改成23。

如果你想要详细的答案,。阅读所有评论。