今天在开发中适配华为mate8(6.0),遇到了注册中申请,并在BaseActivity也手动申请了WRITE_SETTING,依然报权限错误。查了下资料,发现是WRITE_SETTING的权限不能自动授权,也不能运行时请求授权,只能引导用户去开启。
核心代码
//6.0以上才能调用
@TargetApi(23)
void checkPermission(){
if(!Settings.System.canWrite(this)){
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQUEST_CODE);
}
}
在代码中调用checkPermission(),则需要检查当前设备的sdk版本,否则会报错
if (Build.VERSION.SDK_INT >= 23) {
checkPermission();
}