关于android6.0权限适配6.0系统以下的问题总结(二维码扫描)

Android百科全书二维码.jpg

本人最新公众号《Android百科全书》,汇集了各个公众号的优秀文章,进行分类整理,让大家能够更方便的查阅,希望大家多多支持,来个关注奥。

adnroid6.0系统的权限问题在一般情况下可以直接申请,但在某些情况下,会出现6.0以下系统调用权限申请时,系统给出的判断直接是申请成功,此时,我们就需要一些特殊的处理,来适配6.0以下的系统,本文讲述的就是本人开发二维码扫描界面出现的一些问题。

当6.0系统调用照相机时,我们知道,首先应该去手动申请权限,这个权限申请在6.0以下是不需要操作的,系统默认申请,但是google为了android系统的安全,在6.0系统上加了这么一个模式,就是只要涉及危险权限,必须手动申请。

但是在一些6.0以下的系统,你申请权限时,他在你没有点击确认或者拒绝时,直接有一个判断,判断你申请成功,此时,我们点击拒绝,就会出现一些bug,比如二维码扫描界面无法正常工作,我们要做的操作就是在这里。

代码块

申请权限代码(本人在这里使用的是权限工具包 AndroidAcp,也可以自己书写)

 Acp.getInstance(getActivity())
                        .request(new AcpOptions.Builder()
                                .setPermissions(Manifest.permission.CAMERA)
                                .build(), new AcpListener() {
                            @Override
                            public void onGranted() {
                                Intent intent = new Intent(getContext(), MyCaptureActivity.class);
                                startActivityForResult(intent, REQUEST_CODE);

                            }

                            @Override
                            public void onDenied(List permissions) {
                                AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                                builder.setTitle("照相权限被禁止,无法使用该功能!");
                                builder.setPositiveButton("知道了", new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        getActivity().finish();
                                        dialog.dismiss();
//                                                               ToastUtils.showToastShort(String.valueOf((int) rating));

                                    }
                                });
                                builder.create().show();

                            }
                        });

这里是正常的写法,就是对能正常走过权限判断的版本,接下我们要做的就是在使用照相机的界面进行修改,在那里处理直接通过的情况,代码如下:

代码块

   //界面上使用
        try {
            checkCameraPermissions();
        } catch (IOException e) {
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setTitle("照相权限被禁止,无法使用该功能!");
            builder.setPositiveButton("知道了", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    getActivity().finish();
                    dialog.dismiss();                                                        
               }
            });
            builder.create().show();

        } 


    /**
     * 检查相机权限,如果不能打开相机则抛出异常
     */
    public static void checkCameraPermissions() throws IOException {
        try {
            Camera camera = Camera.open();
            if (camera != null) {
                camera.release();
                camera = null;
            }
        } catch (Exception e) {
            throw new IOException();
        }
    }

以上就是我对6.0权限问题处理的总结,如果你有更好的方式,一起来交流下。
本博客不定时推送,总结一些本人开发时遇到的一些问题,如果你喜欢,关注我吧。( ⊙ o ⊙ )( ⊙ o ⊙ )( ⊙ o ⊙ )

( ^_^ )/~~拜拜

你可能感兴趣的:(6-0权限问题)