最近android studio下使用blank activity创建一个demo工程,调用某个sdk,发现之前测试都正常的sdk发生了crash,经过排查发现6.0的权限使用问题
在android 22 之前,如果在权限列表里申请了权限,只要用户安装,就具有了这些权限,到6.0下面就不一样了,如果把targetSdkVersion设为23,会出现如下现象:
如果在权限列表里申请了类似这样的敏感权限:
android.permission.READ_PHONE_STATE
android.permission.WRITE_CONTACTS
安装后是默认没有此权限的,如果用户代码里还使用了如下调用:
String Imei = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)).getDeviceId();
app就直接crash掉了
另外发现, 在6.0下,获取wifi mac地址,获取到的结果是02:00:00:00:00:00,系统默认不再返回正确的mac地址了
6.0系统需要在系统设置里开启对应的权限才能直接使用
怎么解决这个问题呢,我看到三个方法
一、在需要权限的代码加个权限检测判断
Context context = getAppli