今天我们为公司内部员工开发的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