git地址点击打开链接
引用
compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar'
使用方法如下,直接使用不需要判断是否在6.0之上,这是kotlin的语法跟java没区别
val rxPermissions = RxPermissions(this)
rxPermissions.requestEach(Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
.compose(this.bindToLifecycle<Permission>())//绑定生命周期回收订阅需引用rxlifecycle没用引用可以不加此句
.subscribe { // will emit 2 Permission objects
permission ->
when {
permission.granted -> {
Log("权限", "权限被允许")
}
permission.shouldShowRequestPermissionRationale -> {
Log("权限", "权限被拒绝没有选择不再询问")
}
else -> {
Log("权限", "权限被允许选择了不再询问")
}
}
}
RxPermissions已经判断
boolean isMarshmallow() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M;
}
public boolean isGranted(String permission) {
// 如果是Android 6.0 (Api 23)之前,则权限被允许使用。
return !isMarshmallow() || mRxPermissionsFragment.isGranted(permission);
}