解决Android6.0热点开启失败

问题

最近项目中有开启热点的需求,程序运行在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

你可能感兴趣的:(解决Android6.0热点开启失败)