问题
最近项目中有开启热点的需求,程序运行在6.0以下系统没有问题,可是运行在6.0及以上时无法开启热点
解决方案
方案一、
将工程下build.gradle
文件中的targetSdkVersion 23
改成 targetSdkVersion 22
,这里只需将23及以上版本改成低于23版本即可
方案二、
动态申请WRITE_SETTINGS权限
/**
* 申请WRITE_SETTINGS权限,6.0以上
*/
private void permissionWriteSettings() {
// 6.0以上需要检查WRITE_SETTINGS权限,不然无法开启热点
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if(!Settings.System.canWrite(mContext)) {
//没有获取WRITE_SETTINGS, 弹框请求
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQUEST_CODE_WRITE_SETTINGS);
}
}
}
权限请求结果可通过函数Settings.System.canWrite(mContext)
来判断,详见https://www.jianshu.com/p/bab716584316