用基于Rxjava设置动态权限
RxPermissions GitHub地址
要使用此库,您的minSdkVersion必须 > = 11
1.下载RxPermissions
在 build.gradle中 :
repositories {
jcenter() //如果没有就添加,有就不用添加了
}
dependencies {
compile 'com.tbruyelle.rxpermissions:rxpermissions:0.9.3@aar'
}
2.支持Rxjava2
RxPermissions支持RxJava2,只需将包名称更改为com.tbruyelle.rxpermissions2。
dependencies {
compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.3@aar'
}
3.版本9
版本0.8或更早的版本获得RxPermissions的方式为:
RxPermissions.getInstance(this) -> new RxPermissions(this);
从版本0.9开始RxPermissions类不再是单例。创建RxPermissions实例的方式为:
RxPermissions rxPermissions = new RxPermissions(this);
4.用法
- 例如进行相机权限的请求:
rxPermissions
.request(Manifest.permission.CAMERA)
.subscribe(granted -> {
if (granted) { // Always true pre-M
// 权限通过后执行
} else {
// 拒绝权限后执行
}
});
- 进行多个权限的请求:
rxPermissions
.request(Manifest.permission.CAMERA,
Manifest.permission.READ_PHONE_STATE)
.subscribe(granted -> {
if (granted) {
// 所有权限允许后执行
} else {
// 有一个不允许后执行
}
});
当然进行权限设置的时候都是用的lambda表达式,当然也可以不用这样所,不过我比较喜欢用表达式,这样代码很简洁.