一个简单易用的Android 运行时权限请求框架。
1. 在项目根目录下的 build.gradle
文件中加入
allprojects {
repositories {
maven { url = "https://jitpack.io" }
}
}
2. 在 app 模块build.gradle
添加依赖
dependencies {
//仅支持AndroidX
implementation("io.github.liu-wanshun:permissionx:latest_version")
}
1. 权限请求
PermissionX.with(this)
.permissions(Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE)
.onRequestRationale("授权通过后,方便在聊天中,提供发送手机相册中的媒体内容给对方的能力")
.request { result ->
Log.e("ssss", "request onResult: isAllGranted -> ${result.isAllGranted}")
Log.e("ssss", "request onResult: Granted -> ${result.getGrantedList()}")
Log.e("ssss", "request onResult: Denied -> ${result.getDeniedList()}")
}
2.自定义弹框样式
//设置自定义弹框
PermissionX.setRationaleFactory(CustomRationaleFactory())
//取消设置自定义弹框(使用默认弹框)
PermissionX.setRationaleFactory(null)
3.提示
- 限制:需要在 FragmentActivity / Fragment 环境中使用。
- 建议 FragmentActivity 主题使用AppCompat的Theme,如果没有使用AppCompat的Theme,则可以使用以下2种方式
- 重写 style:
PermissionDialogTheme
使用AppCompat - 通过
PermissionX.setRationaleFactory(CustomRationaleFactory())
自定义弹框 - 建议仅在点击时请求权限,禁止在生命周期
onCreate
,onResume
中请求,也尽量避免在onStart
中请求
- 重写 style:
请求时效果 | 永久拒绝时效果 |
---|---|