# PermissionX
**Repository Path**: liu_wanshun/PermissionX
## Basic Information
- **Project Name**: PermissionX
- **Description**: Android 动态权限请求
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 8
- **Forks**: 4
- **Created**: 2021-10-12
- **Last Updated**: 2024-01-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Android
## README
# PermissionX
[](https://jitpack.io/#liu-wanshun/PermissionX)
[](https://www.apache.org/licenses/LICENSE-2.0)
一个简单易用的Android 运行时权限请求框架。
## Gradle
**1.** 在项目根目录下的 `build.gradle` 文件中加入
```groovy
allprojects {
repositories {
maven { url = "https://jitpack.io" }
}
}
```
**2.** 在 app 模块`build.gradle`添加依赖
```groovy
dependencies {
//仅支持AndroidX
implementation("com.github.liu-wanshun:PermissionX:latest_version")
}
```
## 用法
**1.** 权限请求
```kotlin
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.自定义弹框样式
```kotlin
//设置自定义弹框
PermissionX.setRationaleFactory(CustomRationaleFactory())
//取消设置自定义弹框(使用默认弹框)
PermissionX.setRationaleFactory(null)
```
3.提示
1. 限制:需要在 FragmentActivity / Fragment 环境中使用。
2. 建议 FragmentActivity 主题使用AppCompat的Theme,如果没有使用AppCompat的Theme,则可以使用以下2种方式
1. 重写 style:`PermissionDialogTheme` 使用AppCompat
2. 通过 `PermissionX.setRationaleFactory(CustomRationaleFactory())`自定义弹框
3. 建议仅在点击时请求权限,禁止在生命周期`onCreate`,`onResume`中请求,也尽量避免在`onStart`中请求
## 效果演示
| 请求时效果 | 永久拒绝时效果 |
|----------------------------------------------|-----------------------------------------------------|
|
|
|