一个好用的android动态权限申请库

最近在学APT就顺手写了个权限申请库,使用起来非常方便。

首先是引入库,在gradle中直接配置如下:

kotlin项目

implementation 'com.rain.permission:rainknife:1.2.1'

kapt 'com.rain.permission:permission-compile:1.2.0'

java项目

implementation 'com.rain.permission:rainknife:1.2.1'

annotationProcessor 'com.rain.permission:permission-compile:1.2.0'

然后是给需要申请权限的activity或者fragment添加RuntimePermissions注解,如下:

在onCreate()中绑定操作 RainKnife.bind(this)。

然后定义三个方法,分别添加PermissionRequest、PermissionDenied、PermissionNeverAsk注解,value则是申请权限时的requestCode,这三个方法分别处理权限通过、权限被拒绝、权限被拒绝并且选择了不再提示的操作。

一个好用的android动态权限申请库_第1张图片

接下来托管点击事件,

camera.setOnClickListener{

    MainActivityPermissionExpand.doSomethingWithCheckPermission(

this, arrayOf(Manifest.permission.CAMERA),

        PERMISSION_CAMERA

    ){

        showCamera()

}

}

在每个绑定了RuntimePermissions注解的类build后都会生成对应的类名+PermissionExpand类,直接调用doSomethingWithCheckPermission方法即可,需要传入当前的activity,申请的权限组,requestCode和一个回调即可。

最后托管onRequestPermissionResult方法传入当前的activity和onRequestPermissionsResult中的requestCode、permissions、grantResults即可

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) {

    super.onRequestPermissionsResult(requestCode, permissions, grantResults)

    MainActivityPermissionExpand.requestPermissionResult(this, permissions, requestCode, grantResults.toList()

    )

}

使用这个库后省去了繁琐复杂的权限申请判断相关的逻辑操作,代码整洁易于维护。

混淆设置 -keep class com.rain.permission.** {*;}

附上github地址,喜欢的给个star哦。

你可能感兴趣的:(一个好用的android动态权限申请库)