Android开发之权限调用

自己在开发过程中遇到了两个权限方面的巨坑,第一个是摄像头权限的调取第二个是存储权限;第一个倒还好,提示信息比较明确,第二个存储权限的Error提示巨坑,提示找不到相应路径,刚开始还以为自己路径拿错了,一直修改自己获取图片路径的方式.....

Android6.0从版本开始有一个很恶心人的改动,那就是动态权限,稍不注意就会掉到坑里去。

在Android6.0以前,只需要在清单配置文件添加相应权限就可以调用了,但是如果是在Android6.0设备上,需要去动态添加相应权限。

进行版本号判断

// 版本判断。当手机系统大于 23 时,才有必要去判断权限是否获取
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

    // 检查该权限是否已经获取
    int i = ContextCompat.checkSelfPermission(this, permissions[0]);
    // 权限是否已经 授权 GRANTED---授权  DINIED---拒绝
    if (i != PackageManager.PERMISSION_GRANTED) {
        // 如果没有授予该权限,就去提示用户请求
        showDialogTipUserRequestPermission();
    }
private void showDialogTipUserRequestPermission() {
    // 提示用户该请求权限的弹出框

    new AlertDialog.Builder(this)
            .setTitle("存储权限不可用")
            .setMessage("本应用需要获取存储空间,为你存储个人信息;\n否则,您将无法正常使用")
            .setPositiveButton("立即开启", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    startRequestPermission();
                }
            })
            .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                }
            }).setCancelable(false).show();
}

// 开始提交请求权限
private void startRequestPermission() {
    ActivityCompat.requestPermissions(this, permissions, 321);
}

你可能感兴趣的:(个人笔记)