一个简单易用的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:
| 请求时效果 | 永久拒绝时效果 |
|---|---|
![]() |
![]() |

