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

问题:

在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的错误。

不了解support v4版本的,可以查看support v4包介绍文章。

以上文章内容,是本人工作中的总结,供大家参考,有误的地方还请指正。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容