Android权限和版本之间的关系

继续入坑,尝试切换运行时申请权限的时候,发现targetSdkVersion <= 22的时候,checkSelfPermission()都是返回GRANTED(已授权),即使你在设置里面关闭了权限。

使用checkSelfPermission()必须设置targetSdkVersion >= 23,但是权限太多、太乱,暂时放弃。

如果你使用targetSdkVersion <= 22,怎么判断用户关闭了权限?

PermissionChecker.checkSelfPermission(getActivity(), Manifest.permission.CAMERA)

如果用户手动关闭了权限,在Andriod6.0上还可以继续请求权限

        CheckPermission
            .from(this)
            .setPermissions(dangerousPermission)
            .setRationaleConfirmText("Request ACCESS_COARSE_LOCATION")
            .setDeniedMsg("The ACCESS_COARSE_LOCATION Denied")
            .setPermissionListener(new PermissionListener() {
                @Override
                public void permissionGranted() {
                    ...
                }

                @Override
                public void permissionDenied() {
                    ...
                }
            })
            .check();

Android权限和版本之间

AndroidtargetSdkVersionContextPermissionCheckerActivity
checkSelfPrmsncheckSelfPrmsnrequestPrmsns
Android5.0 <= 22GRANTEDGRANTED
DENIED_APP_OP
no
Android5.0 >= 23DENIED
GRANTED
DENIED
GRANTED
no
Android6.0 <= 22GRANTEDGRANTED
DENIED_APP_OP
yes
Android6.0 >= 23DENIED
GRANTED
DENIED
GRANTED
yes

发表评论

电子邮件地址不会被公开。 必填项已用*标注