美文网首页
android 6.0 添加权限问题

android 6.0 添加权限问题

作者: 格老子 | 来源:发表于2017-03-10 16:40 被阅读40次

    权限组(Permission Group)

    所有的权限都属于权限组当中,包括常规权限和危险权限。对于常规权限而言,用户并不需要进行手动赋予权限,而危险权限则相反,所以开发者只需要关注危险权限即可。
    如果app是运行在android 6.0(API level 23)版本上并且app的targetSdkVersion必须是23或者更高。
    如果一个app需要在Mainfest中请求一个危险权限,但是app当前在权限组中并没有任何相关的权限,系统则会弹出一个提示框来让用户自主选择是否赋予当前app相关权限来支持app的相关操作。比如,如果一个app请求读取联系人的权限(READ_CONTACTS),系统会弹出一个提示框询问用户是否为当前app提供读取联系人的权限,用户确认提供则app才会获得权限。

    如果app在请求一个危险权限(A)的时候,app已经包含相同权限组中另一个危险权限了,那么系统会自动提供A的权限,相当于一个权限组中的其中一个权限被请求了通过了,其他权限不需要再次请求。

    附危险权限组:

    权限组

    动态添加ACTION_MANAGE_WRITE_SETTINGS权限

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        // 判断是否有WRITE_SETTINGS权限
        if(!Settings.System.canWrite(this)) {
            // 申请WRITE_SETTINGS权限
            Intent intent = new   Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, 
                                    Uri.parse("package:" + getPackageName()));
            startActivityForResult(intent, REQUEST_CODE);
        } else {
            dosomething();
        }
    } else {
        dosomething();
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intentdata) {
        if (requestCode == REQUEST_CODE) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                // 判断是否有WRITE_SETTINGS权限
                if (Settings.System.canWrite(this)) {
                    dosomething();
                }
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
    

    相关文章

      网友评论

          本文标题:android 6.0 添加权限问题

          本文链接:https://www.haomeiwen.com/subject/vrcogttx.html