checkSeflPermission总是返回' 0'权限是否在启用/禁用

时间:2017-02-01 11:23:48

标签: android android-permissions

我使用下面的代码来检查相机权限是处于启用状态还是禁用状态。

无论什么状态,它总是返回' 0'。不知道为什么?

代码:

@TargetApi(Build.VERSION_CODES.M)
public boolean isPermissionEnabled(String permissionToCheck){
    if (mActivity.checkSelfPermission(permissionToCheck) != PERMISSION_GRANTED) {
        return false;
    }
    return true;
}

3 个答案:

答案 0 :(得分:1)

如果条件为启用/禁用权限,则返回true或false:

       if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {

        if (checkSelfPermission(Manifest.permission.CAMERA)
                == PackageManager.PERMISSION_DENIED) {

            Log.d("permission", "permission denied to camera - requesting it");
            String[] permissions = {Manifest.permission.CAMERA};

            requestPermissions(permissions, PERMISSION_REQUEST_CODE);

        }
    }

答案 1 :(得分:0)

正确定位方法,将permission添加到manifest.xml,并确保mActivity不为空(使用this代替我的优先级):

@TargetApi(Build.VERSION_CODES.M)
public boolean isPermissionEnabled(String permissionToCheck){
    if (ActivityCompat.checkSelfPermission
                (this, permissionToCheck) != PackageManager.PERMISSION_GRANTED)
    {
        return false;
    }
    return true;
}

答案 2 :(得分:0)

就我而言,这是因为我使用 getContext() 来获取上下文,但是一旦我将其更改为 getActivity(),一切都得到了修复!

示例工作代码:

if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
  ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}

注意:我是在一个片段中做这一切的,所以你可能必须使用 MainActivity.this 等价物,希望它会起作用:D