MagicPermission
MagicPermission copied to clipboard
安卓纯注解动态权限申请库
MagicPermission
安卓纯注解动态权限申请库
在需要权限的方法上打上注解,全自动处理动态权限各种问题:
自动处理用户同意/拒绝操作;
自动处理用户拒绝并勾选不在提示后的 弹框提示,并跳转到设置界面引导用户开启权限;
用户在设置界面返回后自动处理 设置界面操作的结果;
兼容国产rom;
使用示例:
单个权限申请
@PermissionRequest(Manifest.permission.CAMERA)
public void testPermission() {
//执行权限申请通过后的业务逻辑
}
多个权限同时申请
@PermissionRequest({Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE})
public void testPermission() {
//执行权限申请通过后的业务逻辑
}
权限申请失败回调(如果不需要自己处理失败结果,可以忽略)
给任意方法打上 注解 @PermissionRequestFailedCallback 即可
打上此注解的方法 即为权限申请失败回调,方法的参数必须为 String[] 或者没有参数;
当参数为String[] 时候,结果为失败的权限数组;
@PermissionRequestFailedCallback
private void failed(String[] failedPermissions) {
Toast.makeText(this, "申请权限失败" + Arrays.toString(failedPermissions), Toast.LENGTH_SHORT).show();
}
注意:只能在Fragment(v4)和FragmentActivity 以及它们的子类 中使用
不要把注解打到有生命周期的方法上,否则可能会导致生命周期被拦截
依赖方法:
To get a Git project into your build:
Step 1. Add the JitPack repository to your build file
1.在全局build里面添加下面github仓库地址
Add it in your root build.gradle at the end of repositories:
buildscript {
...
dependencies {
...
classpath 'cn.leo.plugin:magic-plugin:1.0.0' //java 用这个
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.0' //kotlin 用这个
}
}
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
google()和jcenter()这两个仓库一般是默认的,如果没有请加上
Step 2. Add the dependency
2.在app的build里面添加插件和依赖
...
apply plugin: 'cn.leo.plugin.magic' //java 用这个
apply plugin: 'android-aspectjx' //kotlin 用这个,编译速度会慢点
...
dependencies {
...
implementation 'com.github.jarryleo:MagicPermission:v1.4'
}
上面2个build里面的 java 和 kotlin 二选一,如果AS版本低于3.0 请使用kotlin 版本
混淆配置
-keep class cn.leo.** { *; }
-keepattributes *Annotation*
-keepclassmembers class ** {
@cn.leo.permission.PermissionRequest <methods>;
@cn.leo.permission.PermissionRequestFailedCallback <methods>;
}
用于支持kotlin的插件用的是 aspectjx
感谢插件作者
因为编织所有二进制文件的问题导致编译速度慢的问题,请查看原作者提供的解决方案