用基于Rxjava設(shè)置動態(tài)權(quán)限
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類不再是單例。創(chuàng)建RxPermissions實例的方式為:
RxPermissions rxPermissions = new RxPermissions(this);
4.用法
- 例如進(jìn)行相機權(quán)限的請求:
rxPermissions
.request(Manifest.permission.CAMERA)
.subscribe(granted -> {
if (granted) { // Always true pre-M
// 權(quán)限通過后執(zhí)行
} else {
// 拒絕權(quán)限后執(zhí)行
}
});
- 進(jìn)行多個權(quán)限的請求:
rxPermissions
.request(Manifest.permission.CAMERA,
Manifest.permission.READ_PHONE_STATE)
.subscribe(granted -> {
if (granted) {
// 所有權(quán)限允許后執(zhí)行
} else {
// 有一個不允許后執(zhí)行
}
});
當(dāng)然進(jìn)行權(quán)限設(shè)置的時候都是用的lambda表達(dá)式,當(dāng)然也可以不用這樣所,不過我比較喜歡用表達(dá)式,這樣代碼很簡潔.