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

本文共 902 字,大约阅读时间需要 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相关博客:

转载地址:http://lfmja.baihongyu.com/

你可能感兴趣的文章
WatchService实现配置文件变更监听
查看>>
2017 Node.js 开发框架比较
查看>>
Python中Mock和MagicMock的区别
查看>>
Laravel 5.4 入门系列 7. 文章的显示
查看>>
明月的 WordPress 优化思路总结
查看>>
Amazon DynamoDB 入门6:query 和 scan
查看>>
Mac OS X and python “ValueError: unknown locale: UTF-8”
查看>>
理解CSRF跨站请求伪造
查看>>
被误解的MVC和被神化的MVVM
查看>>
DevOps日常:别人家的运维这样过
查看>>
中台之上(一):重视业务架构,不要让“业务的归业务、技术的归技术”
查看>>
通过Visual Studio为Linux编写C++代码
查看>>
利用Apache Spark SQL和DataFrames扩展关系数据库
查看>>
Netflix 混沌工程手册 Part 3:实践方法
查看>>
2018年开源状况:代码贡献超310亿行,而漏洞超16000个
查看>>
Java初学者如何能够把知识深入贯彻
查看>>
仅售99美元!英伟达发布最小AI计算机Jetson Nano
查看>>
写守护进程时, 需要fork两次吗?
查看>>
方面和服务,差别大吗?
查看>>
Go现在接受来自GitHub PR的补丁
查看>>