Android6.0动态权限最简单的解决方法


前言:动态权限管理是Android6.0(B>uild.VERSION_CODES.M =Api23)推出的,提醒用户当前APP所需>要的权限,防止滥用。这些权限一般分为三种:

(1)普通权限:直接manifest清单文件中写上注册就行了
(2)危险权限:需要动态申请
(3)特殊权限:一般用不上。

原声的动态权限管理很麻烦,代码也不够优雅,因此就有很多的动态权限管理库,比较出名一点的有:

  1. EasyPermissions
  2. RuntimePermission
  3. RxPermissions

相较于其他的权限管理库,RxPermissions的代码最为简洁,逻辑也更加清晰。


首先引入RxPermissions:

Github地址
我的博客地址


关键代码如下:

RxPermissions rxPermissions = new RxPermissions(this);
        rxPermissions
                .requestEach(Manifest.permission.READ_PHONE_STATE,//读取电话
                        Manifest.permission.ACCESS_COARSE_LOCATION)//获取位置信息
                .subscribe(permission -> {
                    if (permission.granted) {
                        Log.d("rxPermissions", permission.name + "同意了");
                        switch (permission.name) {
                            case Manifest.permission.READ_PHONE_STATE:
                                break;
                            case Manifest.permission.ACCESS_COARSE_LOCATION:
                                break;
                        }
                    } else if (permission.shouldShowRequestPermissionRationale) {
                        Log.d("rxPermissions", permission.name + "拒绝了");
                        switch (permission.name) {
                            case Manifest.permission.READ_PHONE_STATE:
                                break;
                            case Manifest.permission.ACCESS_COARSE_LOCATION:
                                break;
                        }
                    } else {
                        switch (permission.name) {
                            case Manifest.permission.READ_PHONE_STATE:
                                break;
                            case Manifest.permission.ACCESS_COARSE_LOCATION:
                                break;
                        }
                        Log.d("rxPermissions", permission.name + "拒绝并不再提示了");
                    }
                });

运行结果:

image

image

你可能感兴趣的:(Android6.0动态权限最简单的解决方法)