前言:动态权限管理是Android6.0(B>uild.VERSION_CODES.M =Api23)推出的,提醒用户当前APP所需>要的权限,防止滥用。这些权限一般分为三种:
(1)普通权限:直接manifest清单文件中写上注册就行了
(2)危险权限:需要动态申请
(3)特殊权限:一般用不上。
原声的动态权限管理很麻烦,代码也不够优雅,因此就有很多的动态权限管理库,比较出名一点的有:
- EasyPermissions
- RuntimePermission
- RxPermissions
相较于其他的权限管理库,RxPermissions的代码最为简洁,逻辑也更加清晰。
首先引入RxPermissions:
关键代码如下:
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