名称 | permissions4m |
---|---|
语言 | Android |
平台 | GitHub |
作者 | jokermonn |
链接 | 点此进入 |
谷歌在安卓5.0以后加入了动态权限申请,所以安卓日常开发,需要做高版本的权限适配这一块。今天给大家推荐一款开源的动态权限申请库,对动态权限申请做了封装,使得整个过程更加简便。
该项目是基于鸿洋大神的 MPermissions 项目进行二次开发,使用编译时注解,较运行时注解效率更高。起初目的是仅作为纯粹的 Andriod 编译时注解项目,较原有项目有以下升级:
- 支持 java8
- 支持一行代码同步请求多个权限
- 支持多种回调函数,代码可以更简洁
permissions4m 为适配国产机型而迭代,目前支持国产机型适配和支持国产机型5.0权限申请。
使用方法
- 导入依赖
在项目根目录的build.gradle添加以下代码:
buildscript {
// ...
}
allprojects {
repositories {
// 请添加如下一行
maven { url 'https://jitpack.io' }
}
}
在App Module里添加:
dependencies {
compile 'com.github.jokermonn:permissions4m:2.1.0-lib'
annotationProcessor 'com.github.jokermonn:permissions4m:2.1.0-processor'
}
- 使用
在 Activity 或 Fragment 中,需要手动添加 onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) 方法以支持权限申请回调,代码如下即可:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[]
grantResults) {
Permissions4M.onRequestPermissionsResult(MainFragment.this, requestCode, grantResults);
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
单个权限申请:
Permissions4M.get(MainActivity.this)
// 是否强制弹出权限申请对话框,建议设置为 true,默认为 true
// .requestForce(true)
// 是否支持 5.0 权限申请,默认为 false
// .requestUnderM(false)
// 权限,单权限申请仅只能填入一个
.requestPermissions(Manifest.permission.RECORD_AUDIO)
// 权限码
.requestCodes(AUDIO_CODE)
// 如果需要使用 @PermissionNonRationale 注解的话,建议添加如下一行
// 返回的 intent 是跳转至**系统设置页面**
// .requestPageType(Permissions4M.PageType.MANAGER_PAGE)
// 返回的 intent 是跳转至**手机管家页面**
// .requestPageType(Permissions4M.PageType.ANDROID_SETTING_PAGE)
.request();
将会回调相应的 @PermissionsGranted、@PermissionsDenied、@PermissionsRationale/PermissionsCustomRationale、@PermissionsNonRationale 所修饰的方法
多个权限同步申请:
@PermissionsRequestSync(permission ={Manifest.permission.BODY_SENSORS,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.READ_CALENDAR},value = {SENSORS_CODE, LOCATION_CODE, CALENDAR_CODE})
public class MainActivity extends AppCompatActivity
更多使用方法,可参考该项目的GitHub Page 。