当前位置: 代码迷 >> 综合 >> android 6.0的动态权限
  详细解决方案

android 6.0的动态权限

热度:10   发布时间:2023-10-20 15:02:43.0

对于Android6.0动态权限 以前一直的解决都是把项目的版本号调在22,可是这样写 很不优美,不与时俱进,这就很难受了。。所以在闲着的时候 这一下技术总结!!!因为不会动图,就不上效果展示了,请见谅..


1.引入 github  地址  implementation 'pub.devrel:easypermissions:1.2.0'


2.在Manifest中 相关配置要用到的危险权限(注意动态申请不仅要在使用的时候去动态申请,配置清单文件时同时也要配置,因为还有6.0以下的手机)


3.在要用到权限的页面 声明所需权限

 String[]perms={ Manifest.permission.READ_CONTACTS, Manifest.permission.ACCESS_FINE_LOCATION};


4.判断是否有权限(不能在事件的监听中去调用)

if (EasyPermissions.hasPermissions(this, perms)) {
//用户已经授权,如果有权限进行相关操作
        // Already have permission, do the thing
        // ...
    } else {
        // 用户没有授权,调用以下代码,询问是否授权提示框
       EasyPermissions.requestPermissions(this, "相关权限被禁止,无法使用某些功能,请开启",
            0, perms);
    }


5.是否授权的回调监听 ,实现implements EasyPermissions.PermissionCallbacks



  //这是点击了同意授权的监听回调
    @Override
    public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {


        if (requestCode == 0) {
            for (int i = 0; i < perms.size(); i++) {
                if (perms.get(i).equals(Manifest.permission.READ_CONTACTS)) {
                    Toast.makeText(this, "我要去联系人了", Toast.LENGTH_SHORT).show();
                }
            }
        }

    }

    //这是点击了拒绝授权的监听回调
    @Override
    public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {

    //调用以下代码,当用户第一次提示授权时点击了拒绝,再次弹窗提示他  是否不在提示 拒绝此权限;
        EasyPermissions.requestPermissions(this, "拒绝了就不能用了哦", 0, perms2);

    }


6.同时不要忘记最后一点 重写一下方法

//次回调页面自己的回调 必须重写
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);


        // Forward results to EasyPermissions
        EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);

    }



好了,总结完毕,开始去试试吧!




  相关解决方案