Android6.0特性之权限申请

Android6.0系统以后的危险权限不禁要在Manifest.xml中注册,还有做动态申请,下面以申请SD卡读写权限为例:

/**
     * 权限申请 SD卡的读写权限
     * @param activity
     */
    private void verifyStoragePermission(Activity activity){
        //1检测权限
        int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if (permission!= PermissionChecker.PERMISSION_GRANTED){
            //2没有权限,需要申请权限,弹出对话框
            ActivityCompat.requestPermissions(activity,PERMISSION_STORAGE,REQUSET_CODE_STORAGE);
        }
    }

定义一个方法,首先检测有没有写入SD卡的权限,如果没有此权限,那么将弹出对话框申请权限。ActivityCompat.requestPermissions(activity,PERMISSION_STORAGE,REQUSET_CODE_STORAGE);的三个参数分别为:上下文对象,需要申请权限的数组,申请码。

private static final int REQUSET_CODE_STORAGE = 1;

    private String[] PERMISSION_STORAGE ={
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.READ_EXTERNAL_STORAGE
    };

然后定义一下后两个参数,申请权限的数组为SD卡的读和写的权限,申请码定义为1。

/**
     * @param requestCode 请求码
     * @param permissions 申请的权限
     * @param grantResults 请求结果的集合
     */
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        if (grantResults[0]==PermissionChecker.PERMISSION_GRANTED){
            //申请权限成功
            Toast.makeText(this,"授权SD卡权限成功",Toast.LENGTH_SHORT).show();
        }else {
            //申请权限失败
            Toast.makeText(this,"授权SD卡权限失败,可能会影响应用的使用",Toast.LENGTH_SHORT).show();
        }
    }

重写onRequestPermissionsResult方法作为申请权限的回调,用于用户操作后的处理,三个参数如注释所示。

最后一定不要忘记在清单文件中做注册



以上就是简单的关于对权限动态注册的模板,仅此作为个人记录,欢迎大家指出错误指出和提出更好的建议。

你可能感兴趣的:(Android6.0特性之权限申请)