Browse Source

提交1.1.7,优化回调方法

kth_win_android 2 years ago
parent
commit
8b8e30a7af

+ 8 - 7
README.md

@@ -9,7 +9,7 @@
 ~~~
 repositories {
         maven {
-            url "http://maven.keleyanyi.com/repository/benyanyi/"
+            url "http://www.benyanyi.com/repository/benyanyi/"
         }
     }
 ~~~
@@ -20,7 +20,7 @@ dependencyResolutionManagement {
     repositories {
         maven {
             allowInsecureProtocol = true
-            url "http://maven.keleyanyi.com/repository/benyanyi/"
+            url "http://www.benyanyi.com/repository/benyanyi/"
         }
     }
 }
@@ -29,7 +29,7 @@ dependencyResolutionManagement {
 ### 在需要权限请求模块下的 build.gradle 文件中加入远程依赖
 
 ~~~
-implementation 'com.yanyi.benyanyi:PermissionHelper:1.1.6'
+implementation 'com.yanyi.benyanyi:PermissionHelper:1.1.7'
 ~~~
 
 ### 使用
@@ -40,20 +40,20 @@ implementation 'com.yanyi.benyanyi:PermissionHelper:1.1.6'
                         Manifest.permission.CALL_PHONE,
                         Manifest.permission.ACCESS_COARSE_LOCATION,
                         Manifest.permission.ACCESS_FINE_LOCATION)
-                .setDefaultPermissionDialogInfo()
+                .setDefaultPermissionDialogInfo()//默认请求失败弹窗
                 .request(new PermissionCallBack() {
                     @Override
-                    public void onPermissionSuccess() {
+                    public void onSuccess() {
                         log("所有权限请求成功");
                     }
 
                     @Override
-                    public void onPermissionFailure(String[] failurePermissions) {
+                    public void onFailure(String[] failurePermissions) {
                         log("部分权限请求失败");
                     }
 
                     @Override
-                    public void onPermissionComplete() {
+                    public void onComplete() {
                         log("请求结束");
                     }
                 });
@@ -61,6 +61,7 @@ implementation 'com.yanyi.benyanyi:PermissionHelper:1.1.6'
 
 ### 版本更新
 
+* 2022-11-25更新(1.1.7) 优化回调方法
 * 2022-08-31更新(1.1.6) 修改方法,去除多余方法及多余配置项,添加默认dialog配置,优化跳转设置页设置权限后返回权限请求结果无反应,适配android11所有文件访问权限
 * 2021-08-27更新(1.1.4) 删除kotlin版本,升级gradle版本,修改maven地址
 * 2021-03-23更新(1.1.3) 添加kotlin版1.1.3版本

+ 3 - 3
app/src/main/java/com/yanyi/basepermission/MainActivity.java

@@ -36,17 +36,17 @@ public class MainActivity extends AppCompatActivity {
                 .setDefaultPermissionDialogInfo()
                 .request(new PermissionCallBack() {
                     @Override
-                    public void onPermissionSuccess() {
+                    public void onSuccess() {
                         log("请求成功");
                     }
 
                     @Override
-                    public void onPermissionFailure(String[] failurePermissions) {
+                    public void onFailure(String[] failurePermissions) {
                         log("请求失败");
                     }
 
                     @Override
-                    public void onPermissionComplete() {
+                    public void onComplete() {
                         log("请求结束");
                     }
                 });

+ 3 - 3
build.gradle

@@ -6,11 +6,11 @@ buildscript {
         google()
         jcenter()
         mavenCentral()
-        maven{ url 'http://maven.keleyanyi.com/repository/benyanyi/'}
+        maven{ url 'http://www.benyanyi.com/repository/benyanyi/'}
     }
     dependencies {
         classpath 'com.android.tools.build:gradle:4.1.3'
-        classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'
+        classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
@@ -22,7 +22,7 @@ allprojects {
         google()
         jcenter()
         mavenCentral()
-        maven{ url 'http://maven.keleyanyi.com/repository/benyanyi/'}
+        maven{ url 'http://www.benyanyi.com/repository/benyanyi/'}
         //解决中文乱码问题
         tasks.withType(Javadoc) { //兼容中文
             options.addStringOption('Xdoclint:none', '-quiet')

+ 0 - 190
permissionlib/src/main/java/com/benyanyi/permissionlib/PermissionBind.java

@@ -1,190 +0,0 @@
-package com.benyanyi.permissionlib;
-
-import android.app.Activity;
-
-import com.benyanyi.permissionlib.annotation.GetPermissionComplete;
-import com.benyanyi.permissionlib.annotation.GetPermissionDialogInfo;
-import com.benyanyi.permissionlib.annotation.GetPermissionFailure;
-import com.benyanyi.permissionlib.annotation.GetPermissionSuccess;
-import com.benyanyi.permissionlib.annotation.GetPermissions;
-import com.benyanyi.permissionlib.callback.PermissionCallBack;
-import com.benyanyi.permissionlib.dialog.PermissionDialogInfo;
-
-import java.lang.reflect.Method;
-
-/**
- * @author YanYi
- * @date 2019/5/24 11:33
- * @email ben@yanyi.red
- * @overview
- */
-public final class PermissionBind {
-    private static PermissionBind instance;
-    private PermissionConfig permissionConfig;
-    private Object object;
-
-    private PermissionBind(Activity activity, Object object) {
-        this.object = object;
-        this.permissionConfig = PermissionHelper.with(activity);
-        initPermission();
-    }
-
-    public static PermissionBind request(Activity activity, Object object) {
-        if (instance == null) {
-            instance = new PermissionBind(activity, object);
-        }
-        return instance;
-    }
-
-    /**
-     * 需要申请的权限获取
-     * 权限动态申请
-     * 权限申请回调
-     */
-    private void initPermission() {
-        Class<?> aClass = this.object.getClass();
-        GetPermissions annotation = aClass.getAnnotation(GetPermissions.class);
-        if (annotation != null) {
-            String[] value = annotation.value();
-            if (value.length > 0) {
-                this.setPermissions(value);
-                this.setPermissionDialogInfo(annotationDialogInfo());
-                this.annotationCallBack();
-            }
-        }
-    }
-
-    /**
-     * 设置权限dialog
-     */
-    private PermissionDialogInfo annotationDialogInfo() {
-        PermissionDialogInfo dialogInfo = new PermissionDialogInfo();
-        Method[] methods = this.object.getClass().getDeclaredMethods();
-        for (Method method : methods) {
-            GetPermissionDialogInfo permissionDialogInfo = method.getAnnotation(GetPermissionDialogInfo.class);
-            if (permissionDialogInfo != null && method.getReturnType().getSimpleName().equals("PermissionDialogInfo")) {
-                Class<?>[] parameterTypes = method.getParameterTypes();
-                String i1 = "PermissionDialogInfo";
-                if (parameterTypes.length == 1) {
-                    boolean boo1 = parameterTypes[0].getSimpleName().equals(i1);
-                    try {
-                        method.setAccessible(true);
-                        if (boo1) {
-                            Object invoke = method.invoke(this.object, dialogInfo);
-                            if (invoke instanceof PermissionDialogInfo) {
-                                return (PermissionDialogInfo) invoke;
-                            } else {
-                                dialogInfo.isShow = false;
-                                return dialogInfo;
-                            }
-                        }
-                    } catch (Exception e) {
-                        dialogInfo.isShow = false;
-                        return dialogInfo;
-                    }
-                }
-            }
-        }
-        dialogInfo.isShow = false;
-        return dialogInfo;
-    }
-
-    /**
-     * 权限申请结果回调注解处理
-     */
-    private void annotationCallBack() {
-        this.request(new PermissionCallBack() {
-            @Override
-            public void onPermissionSuccess() {
-                annotationSuccess();
-            }
-
-            @Override
-            public void onPermissionFailure(String[] failurePermissions) {
-                annotationFailure(failurePermissions);
-            }
-
-            @Override
-            public void onPermissionComplete() {
-                annotationComplete();
-            }
-        });
-    }
-
-    /**
-     * 权限获取成功处理注解
-     */
-    private void annotationSuccess() {
-        Method[] methods = this.object.getClass().getDeclaredMethods();
-        for (Method method : methods) {
-            GetPermissionSuccess permissionSuccess = method.getAnnotation(GetPermissionSuccess.class);
-            if (permissionSuccess != null) {
-                method.setAccessible(true);
-                try {
-                    method.invoke(this.object);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-
-    }
-
-    /**
-     * 权限未全部获取成功注解处理
-     */
-    private void annotationFailure(String[] failurePermissions) {
-        Method[] methods = this.object.getClass().getDeclaredMethods();
-        for (Method method : methods) {
-            GetPermissionFailure permissionFailure = method.getAnnotation(GetPermissionFailure.class);
-            if (permissionFailure != null) {
-                Class<?>[] parameterTypes = method.getParameterTypes();
-                String str1 = "String[]";
-                for (Class<?> aClass : parameterTypes) {
-                    if (aClass.getSimpleName().equals(str1)) {
-                        method.setAccessible(true);
-                        try {
-                            method.invoke(this.object, (Object) failurePermissions);
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 权限请求完成后注解处理
-     */
-    private void annotationComplete() {
-        Method[] methods = this.object.getClass().getDeclaredMethods();
-        for (Method method : methods) {
-            GetPermissionComplete permissionComplete = method.getAnnotation(GetPermissionComplete.class);
-            if (permissionComplete != null) {
-                method.setAccessible(true);
-                try {
-                    method.invoke(this.object);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-    }
-
-    private void setPermissions(String... permissions) {
-        this.permissionConfig.setPermissions(permissions);
-    }
-
-    private void setPermissionDialogInfo(PermissionDialogInfo info) {
-        this.permissionConfig.setPermissionDialogInfo(info);
-    }
-
-    private void request(PermissionCallBack callBack) {
-        this.permissionConfig.request(callBack);
-    }
-
-    public PermissionConfig getPermissionConfig() {
-        return this.permissionConfig;
-    }
-}

+ 20 - 21
permissionlib/src/main/java/com/benyanyi/permissionlib/PermissionFragment.java

@@ -35,7 +35,6 @@ public final class PermissionFragment extends Fragment {
     private PermissionDialogInfo info;
     private final int code1 = 0x31;
     private final int code2 = 0x32;
-    private int permissionCode = 0x30;
     private boolean isStop = false;
     private boolean isShow = false;
 
@@ -95,8 +94,8 @@ public final class PermissionFragment extends Fragment {
         if (checkPermission()) {
             if (permissions2 != null && permissions2.length <= 0) {
                 if (this.callBack != null) {
-                    this.callBack.onPermissionSuccess();
-                    this.callBack.onPermissionComplete();
+                    this.callBack.onSuccess();
+                    this.callBack.onComplete();
                     PermissionHelper.removeFragment();
                 }
             } else {
@@ -105,8 +104,8 @@ public final class PermissionFragment extends Fragment {
                     startActivity(intent);
                 } else {
                     if (this.callBack != null) {
-                        this.callBack.onPermissionSuccess();
-                        this.callBack.onPermissionComplete();
+                        this.callBack.onSuccess();
+                        this.callBack.onComplete();
                         PermissionHelper.removeFragment();
                     }
                 }
@@ -197,8 +196,8 @@ public final class PermissionFragment extends Fragment {
                     negativeClick.onClick(callBack, PermissionFragment.this.oList.toArray(new String[0]));
                 } else {
                     if (callBack != null) {
-                        callBack.onPermissionFailure(PermissionFragment.this.oList.toArray(new String[0]));
-                        callBack.onPermissionComplete();
+                        callBack.onFailure(PermissionFragment.this.oList.toArray(new String[0]));
+                        callBack.onComplete();
                         PermissionHelper.removeFragment();
                     }
                 }
@@ -227,15 +226,15 @@ public final class PermissionFragment extends Fragment {
                     startActivity(intent);
                 } else {
                     if (this.callBack != null) {
-                        this.callBack.onPermissionSuccess();
-                        this.callBack.onPermissionComplete();
+                        this.callBack.onSuccess();
+                        this.callBack.onComplete();
                         PermissionHelper.removeFragment();
                     }
                 }
             } else {
                 if (this.callBack != null) {
-                    this.callBack.onPermissionSuccess();
-                    this.callBack.onPermissionComplete();
+                    this.callBack.onSuccess();
+                    this.callBack.onComplete();
                     PermissionHelper.removeFragment();
                 }
             }
@@ -281,21 +280,21 @@ public final class PermissionFragment extends Fragment {
                 if (this.permissions2 != null && this.permissions2.length > 0) {
                     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !Environment.isExternalStorageManager()) {
                         if (this.callBack != null) {
-                            this.callBack.onPermissionFailure(this.permissions2);
-                            this.callBack.onPermissionComplete();
+                            this.callBack.onFailure(this.permissions2);
+                            this.callBack.onComplete();
                             PermissionHelper.removeFragment();
                         }
                     } else {
                         if (this.callBack != null) {
-                            this.callBack.onPermissionSuccess();
-                            this.callBack.onPermissionComplete();
+                            this.callBack.onSuccess();
+                            this.callBack.onComplete();
                             PermissionHelper.removeFragment();
                         }
                     }
                 } else {
                     if (this.callBack != null) {
-                        this.callBack.onPermissionSuccess();
-                        this.callBack.onPermissionComplete();
+                        this.callBack.onSuccess();
+                        this.callBack.onComplete();
                         PermissionHelper.removeFragment();
                     }
                 }
@@ -303,8 +302,8 @@ public final class PermissionFragment extends Fragment {
                 if (this.isShow) {
                     showDialog();
                 } else if (this.callBack != null) {
-                    this.callBack.onPermissionFailure(this.oList.toArray(new String[0]));
-                    this.callBack.onPermissionComplete();
+                    this.callBack.onFailure(this.oList.toArray(new String[0]));
+                    this.callBack.onComplete();
                     PermissionHelper.removeFragment();
                 }
             }
@@ -320,8 +319,8 @@ public final class PermissionFragment extends Fragment {
 
     private void setFailure() {
         if (this.callBack != null) {
-            this.callBack.onPermissionFailure(this.oList.toArray(new String[0]));
-            this.callBack.onPermissionComplete();
+            this.callBack.onFailure(this.oList.toArray(new String[0]));
+            this.callBack.onComplete();
             PermissionHelper.removeFragment();
         }
     }

+ 0 - 18
permissionlib/src/main/java/com/benyanyi/permissionlib/annotation/GetPermissionComplete.java

@@ -1,18 +0,0 @@
-package com.benyanyi.permissionlib.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @author YanYi
- * @date 2019/5/29 16:46
- * @email ben@yanyi.red
- * @overview
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface GetPermissionComplete {
-
-}

+ 0 - 17
permissionlib/src/main/java/com/benyanyi/permissionlib/annotation/GetPermissionDialogInfo.java

@@ -1,17 +0,0 @@
-package com.benyanyi.permissionlib.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @author YanYi
- * @date 2019/5/30 12:55
- * @email ben@yanyi.red
- * @overview
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface GetPermissionDialogInfo {
-}

+ 0 - 17
permissionlib/src/main/java/com/benyanyi/permissionlib/annotation/GetPermissionFailure.java

@@ -1,17 +0,0 @@
-package com.benyanyi.permissionlib.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @author YanYi
- * @date 2019/5/29 16:45
- * @email ben@yanyi.red
- * @overview
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface GetPermissionFailure {
-}

+ 0 - 17
permissionlib/src/main/java/com/benyanyi/permissionlib/annotation/GetPermissionSuccess.java

@@ -1,17 +0,0 @@
-package com.benyanyi.permissionlib.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @author YanYi
- * @date 2019/5/29 16:44
- * @email ben@yanyi.red
- * @overview
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface GetPermissionSuccess {
-}

+ 0 - 18
permissionlib/src/main/java/com/benyanyi/permissionlib/annotation/GetPermissions.java

@@ -1,18 +0,0 @@
-package com.benyanyi.permissionlib.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @author YanYi
- * @date 2019/5/24 11:23
- * @email ben@yanyi.red
- * @overview 申明需要获取的权限,及获取权限时申明的permissionCode
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface GetPermissions {
-    String[] value() default {""};
-}

+ 6 - 4
permissionlib/src/main/java/com/benyanyi/permissionlib/callback/PermissionCallBack.java

@@ -6,21 +6,23 @@ package com.benyanyi.permissionlib.callback;
  * @email ben@yanyi.red
  * @overview
  */
-public interface PermissionCallBack {
+public abstract class PermissionCallBack {
     /**
      * 拥有所有权限
      */
-    void onPermissionSuccess();
+    public abstract void onSuccess();
 
     /**
      * 没有拥有所有权限
      *
      * @param failurePermissions 未获取到的权限
      */
-    void onPermissionFailure(String[] failurePermissions);
+    public void onFailure(String[] failurePermissions) {
+    }
 
     /**
      * 申请权限后执行该操作,不管有没有获取到所有权限
      */
-    void onPermissionComplete();
+    public void onComplete() {
+    }
 }

+ 2 - 2
permissionlib/src/main/java/com/benyanyi/permissionlib/dialog/PermissionDefaultDialogInfo.java

@@ -30,8 +30,8 @@ public class PermissionDefaultDialogInfo {
             @Override
             public void onClick(PermissionCallBack callBack, String[] failurePermissions) {
                 if (callBack != null) {
-                    callBack.onPermissionFailure(failurePermissions);
-                    callBack.onPermissionComplete();
+                    callBack.onFailure(failurePermissions);
+                    callBack.onComplete();
                 }
             }
         };