//工具集
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
})
android权限使用流程
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- PermissionsDispatcher2.3.2使用 Android6.0权限官网https://develo...
- 1.0 事实上这章特别难写,知识点比较清楚,比较少。但是代码量特别多,主要还是因为重复性的代码比较多,而且在细节方...
- 一、黑名单账户列表 actor-blacklist = blacklistmee actor-blacklist ...
- 1.0 当然,其实本篇和权限处理没有什么关系。但是: 我们需要用到上一篇博文中ProviderTest项目来当小白...
- ExplainPermissions 动态权限申请并展示权限使用说明 随着工信部对APP的一系列整治,现在用户对于...