Android6.0权限控制

  随着android6.0的更新,最大的变化莫过于新的权限控制规则。以前可以直接通过AndroidManifest配置需要的权限。而更新后,为了保证用户隐私的安全性,部分私密权限需要动态的设置,仅仅在AndroidManifest中配置已经完全不能满足需求了。
  当然为了达到兼容,项目使用的SDK如果是在23之前(即6.0之前)那么会依照之前的规则直接在AndroidManifest中设置即可。而当SDK升级到6.0后,例如录音、相册、定位等私密信息,就需要按照新的规则动态的申请权限。
  本文提供一个权限管理类来使开发者能够快速在6.0中配置好自己需要的权限。

使用:

  使用之前需要将三个类拷入项目中,它们分别是:Permissions、PermissionsManager、PermissionsResultAction。之后需要在申请权限的地方配置它们。

 private void requestPermissions() {
        if (!PermissionsManager.getInstance().hasAllPermissions(this, new String[]{
                Manifest.permission.WRITE_EXTERNAL_STORAGE,//写入权限
                Manifest.permission.CALL_PHONE,//电话拨打权限
                Manifest.permission.READ_PHONE_STATE,
        })) ;
        PermissionsManager.getInstance().requestPermissionsIfNecessaryForResult(this,
                new String[]{
                        Manifest.permission.WRITE_EXTERNAL_STORAGE,
                        Manifest.permission.CALL_PHONE,
                        Manifest.permission.READ_PHONE_STATE,
                }, new PermissionsResultAction() {

                    @Override
                    public void onGranted() {
                        // TODO Auto-generated method stub
                        showLogInfo("权限添加成功");

                    }

                    @Override
                    public void onDenied(String permission) {
                        // TODO Auto-generated method stub
                        showLogError("用户拒绝添加权限---" + permission);
                    }
                });
    }
 @Override
    public void onRequestPermissionsResult(int permsRequestCode,
                                           String[] permissions, int[] grantResults) {
        PermissionsManager.getInstance().
                notifyPermissionsChange(permissions, grantResults);
    }

注意:

即便通过如此设置了权限,仍然需要在AndroidManifest中进行配置,这一部分是必不可少的。

附件:

Demo文件下载

    原文作者:饮水思源为名
    原文地址: https://www.jianshu.com/p/67a4fe0396f3
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞