当Android targetSdkVersion小于23时如何检查权限

来源:互联网 发布:怎么监控sqlite数据库 编辑:程序博客网 时间:2024/06/01 10:07

问题:

在Android M(API 23)及更高版本机器上运行targetSdkVersion < 23的应用时,当调用checkSelfPermission,返回值始终为PERMISSION_GRANTED,即使用户关闭了该权限,返回值还是PERMISSION_GRANTED。

解决办法:

1、获取应用的 targetSdkVersion 值

PackageInfo info = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(),0);

targetSdkVersion = info.applicationInfo.targetSdkVersion;

2、当targetSdkVersion >= 23时,用mContext.checkSelfPermission检查权限;

当targetSdkVersion < 23时,用PermissionChecker.checkSelfPermission检查权限

PermissionChecker.checkSelfPermission(mContext,permission)

注意:要想正常使用PermissionChecker.checkSelfPermission方法,必需依赖support v4包中的:support-core-utils-25.1.0和support-compat-25.1.0,版本号25.1.0及以上都可以,25.1.0以下会出现Do not find class AppOpsManagerCompat23的错误。

原创粉丝点击