Android6.0运行时权限管理

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


前言

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

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

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

  1. EasyPermissions
  2. RuntimePermission
  3. RxPermissions

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


引入RxPermissions

Github地址


关键代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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 + "拒绝并不再提示了");
}
});

运行结果

图片名称
图片名称