博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发 - 更"聪明"的申请权限方式
阅读量:6916 次
发布时间:2019-06-27

本文共 938 字,大约阅读时间需要 3 分钟。

在Android6.0以后,很多权限需要动态申请,只有在用户点同意后,我们才能使用对应API,因此,正确申请权限就显得很重要。

常用方式

通常我们使用这种方式来判断权限状态:

private static boolean isGranted(final String permission) {    return Build.VERSION.SDK_INT < Build.VERSION_CODES.M            || PackageManager.PERMISSION_GRANTED            == ContextCompat.checkSelfPermission(Utils.getApp(), permission);}

但是用这种方式我们会碰到一个比较棘手的情况,当用户同意了某个权限后,然后用户又在手机的系统设置的应用权限中关闭了这个权限,此时我们并不能正确获取到正确的权限状态。

解决办法

有可能Android团队意识到了这个问题,所以他们发布了一个新的权限检查类:android.support.v4.content.PermissionChecker;

用这个类进行权限的检查就会正确返回,所以我们把权限校验的方法修改如下:

import android.support.v4.content.PermissionChecker;private static boolean isGranted(final String permission) {    return Build.VERSION.SDK_INT < Build.VERSION_CODES.M            || PackageManager.PERMISSION_GRANTED            == PermissionChecker.checkCallingOrSelfPermission(Utils.getApp(), permission);}

这样就会解决手机设置与用户授权不一致的问题。

,如有更多疑问,请参考我的其它Android相关博客:

转载于:https://blog.51cto.com/11761032/2303628

你可能感兴趣的文章
Seo界神话 360好搜
查看>>
JavaScript闭包
查看>>
datatables服务器端分页
查看>>
用PL/SQL Developer导出表数据的时候,窗口一闪而过解决办法
查看>>
杨辉三角
查看>>
将 Log4j 配置文件放在项目外面
查看>>
nginx日志切割
查看>>
以太坊Dapp终极教程——如何构建一个完整的全栈去中心化应用(二)
查看>>
客户端bug测试贴
查看>>
java web 开发 编码问题详解
查看>>
python写的发邮件的小程序!
查看>>
Linux入门(四)
查看>>
org.tinygroup.dbfilter
查看>>
实战 MDT 2012(三)---捕获镜像
查看>>
这九份信,送给十八九岁的自己
查看>>
Linux命令汇总之正则表达式
查看>>
VirtualBox 网络互连
查看>>
关于‘,’分割的字符串的查询
查看>>
数据透视表在access和excel中的应用举例
查看>>
linux 救援模式恢复grub
查看>>