美文网首页开源库挖掘&推荐
安卓动态权限申请 | permissions4m

安卓动态权限申请 | permissions4m

作者: 5afd372c86ba | 来源:发表于2017-09-12 10:29 被阅读98次
名称 permissions4m
语言 Android
平台 GitHub
作者 jokermonn
链接 点此进入

谷歌在安卓5.0以后加入了动态权限申请,所以安卓日常开发,需要做高版本的权限适配这一块。今天给大家推荐一款开源的动态权限申请库,对动态权限申请做了封装,使得整个过程更加简便。
该项目是基于鸿洋大神的 MPermissions 项目进行二次开发,使用编译时注解,较运行时注解效率更高。起初目的是仅作为纯粹的 Andriod 编译时注解项目,较原有项目有以下升级:

  • 支持 java8
  • 支持一行代码同步请求多个权限
  • 支持多种回调函数,代码可以更简洁

permissions4m 为适配国产机型而迭代,目前支持国产机型适配和支持国产机型5.0权限申请。

使用方法

  1. 导入依赖
    在项目根目录的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'
}
  1. 使用
    在 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

相关文章

网友评论

    本文标题:安卓动态权限申请 | permissions4m

    本文链接:https://www.haomeiwen.com/subject/ywtcsxtx.html