自己在开发过程中遇到了两个权限方面的巨坑,第一个是摄像头权限的调取第二个是存储权限;第一个倒还好,提示信息比较明确,第二个存储权限的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); }