您现在的位置是:首页 > 文章详情

Android开发 - 更"聪明"的申请权限方式

日期:2018-10-17点击:328

在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://yq.aliyun.com/articles/655009
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章