今天我们为公司内部员工开发的app出现了一个bug,因为我们的app要绑定imei所以我就读取imei并且有个权限READ_PHONE_STATE就是这个权限出现了问题,我就纳闷了怎么会有问题呢,我已经在manifest上声明了,然后我就看一下他的android版本6.0(什么时候国产手机系统跟进竟然这么快了!),我就去搜了一些相关资料才发现是android6.0涉及到隐私的权限是动态的,也就是说你每次调用的方法如果涉及到隐私都需要检查一下该权限,因为用户可以随时取消你得相关授权。
权限检查
你可以通过ContextCompat.checkSelfPermission()方法来验证你的应用是否拥有某个权限。比如,下面的代码段是检查是否有拥有写日历权限:
// 假设 thisActivity 是当前的 Activity
int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.WRITE_CALENDAR);
如果该应用已经获取到该权限,该方法返回PackageManager.PERMISSION_GRANTED并且程序可以继续运行。如果该应用未被授予该权限,这个方法会返回PERMISSION_DENIED,同时应用需要明确提示用户该应用所需要的权限。

本文介绍了在Android 6.0系统中,由于动态权限管理导致的APP崩溃问题。从权限检查、请求权限、解释权限原因以及处理请求权限结果四个方面进行了详细阐述,强调了在Android 6.0及以上版本,对于涉及隐私的权限,应用必须在运行时检查并请求用户授权,否则可能导致程序异常。

709

被折叠的 条评论
为什么被折叠?



