权限管理踩过的坑

2018-10-10  本文已影响0人  码农朱同学

用到开源的一个权限管理库
https://github.com/yanzhenjie/AndPermission

1,系统6.0以上的手机,调用相机时,onGranted与onDenied都调用了

原因分析:相机调用时,拍的照片所放位置

 Intent intent;
        // 判断是否挂载了SD卡
        String savePath = "";
        String storageState = Environment.getExternalStorageState();
        if (storageState.equals(Environment.MEDIA_MOUNTED)) {
            savePath = Environment.getExternalStorageDirectory() + "/";
            File savedir = new File(savePath);
            if (!savedir.exists()) {
                savedir.mkdirs();
            }
        }

        // 没有挂载SD卡,无法保存文件
        if (CommonUtils.isNull(savePath)) {
            ToastTool.showToast("无法保存照片,请检查SD卡是否挂载");
            return;
        }

再次触发进入sd卡权限申请,所以又回调了onDenied方法


 // 6.0之上申请牌照和写入存储权限
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            AndPermission.with(Select_or_Picture_Activity.this).permission(Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE)
                    .rationale(new DefaultRationale() )
                    .onGranted(new Action() {
                        @Override
                        public void onAction(List<String> permissions) {
                            System.out.println("---------有权限了");
                            Toast.makeText(Select_or_Picture_Activity.this,R.string.successfully,Toast.LENGTH_SHORT).show();
                        }
                    })
                    .onDenied(new Action() {
                        @Override
                        public void onAction(List<String> permissions) {
                            System.out.println("---------没有权限");
                            Toast.makeText(Select_or_Picture_Activity.this,R.string.failure,Toast.LENGTH_SHORT).show();
                            if (AndPermission.hasAlwaysDeniedPermission(Select_or_Picture_Activity.this, permissions)) {
                                mSetting.showSetting(permissions);
                            }
                        }
                    }).start();
        }else {
//            new getPic().execute(); // 获取图片

2,允许权限后,进入设置改为拒绝,又调用onGranted,但其实并没有授权

待续

上一篇 下一篇

猜你喜欢

热点阅读