//工具集
implementation 'com.blankj:utilcode:1.30.7'
//RxJava系统权限管理
implementation 'com.github.tbruyelle:rxpermissions:0.10.2'
//rxJava响应式编程
implementation 'io.reactivex.rxjava2:rxjava:2.2.8'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
@SuppressLint("CheckResult")
fun FragmentActivity.requestAppPermission(okListener:()-> Unit, qxListener: ()->Unit){
val permissions=arrayOf(
Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
val rxPermissions=RxPermissions(this)
if (!PermissionUtils.isGranted(*permissions)){//未通过
//先弹窗提示权限使用对话框
CommonIosDialog.Builder(this)
.setTitle(getString(R.string.use_photography_permission))
.setContent(getString(R.string.image_read_storage_permission))
.setMode(CommonIosDialog.Mode.DOUBLE_MODE)
.setCancel("取消", null)
.setConfirm("确定", object : OnMultiClickListener() {
override fun onMultiClick(v: View?) {
rxPermissions.request(*permissions).subscribe { aBoolean ->
if (aBoolean) {
okListener.invoke()
} else {
qxListener.invoke()
//用户拒接时,弹窗提示用户去权限设置页开启权限
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
val uri = Uri.fromParts("package", packageName, null)
intent.data = uri
startActivityForResult(intent, 0)
}
}
}
}).create().show()
}else{//已通过
okListener.invoke()
}
}
//使用时
requestAppPermission(okListener = {
//to do
}, qxListener = {
//to do
})
网友评论