From 687469c5cc87ac66ec159e192056d715a533af2a Mon Sep 17 00:00:00 2001 From: wangjing Date: Thu, 27 Jun 2019 10:13:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0AOP=E7=9A=84=E6=9D=83?= =?UTF-8?q?=E9=99=90=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + bl_commonlib/build.gradle | 1 + bl_data/readme/bl_permission.md | 65 +++++++ bl_demo/bl_demo.iml | 59 ++++--- bl_demo/build.gradle | 1 + bl_demo/src/main/AndroidManifest.xml | 6 + .../com/bailun/bl_demo/DemoApplication.java | 18 ++ .../java/com/bailun/bl_demo/MainActivity.java | 7 + .../permission/AopPermissionActivity.java | 77 +++++++++ .../res/layout/activity_aop_permission.xml | 45 +++++ bl_demo/src/main/res/layout/activity_main.xml | 6 + bl_permission/.gitignore | 1 + bl_permission/bl_permission.iml | 160 ++++++++++++++++++ bl_permission/build.gradle | 33 ++++ bl_permission/proguard-rules.pro | 21 +++ .../ExampleInstrumentedTest.java | 26 +++ bl_permission/src/main/AndroidManifest.xml | 8 + .../AOPRequestPermission.java | 111 ++++++++++++ .../permissionlibrary/PermissionResult.java | 11 ++ .../permissionlibrary/PermissionUtils.java | 24 +++ .../activity/PermissionRequestActivity.java | 108 ++++++++++++ .../annotation/RequestPermission.java | 17 ++ .../annotation/RequestPermissionForbid.java | 15 ++ .../annotation/RequestPermissionRefuse.java | 15 ++ bl_permission/src/main/res/values/strings.xml | 4 + bl_permission/src/main/res/values/styles.xml | 13 ++ .../permissionlibrary/ExampleUnitTest.java | 17 ++ build.gradle | 2 + settings.gradle | 2 +- 29 files changed, 848 insertions(+), 26 deletions(-) create mode 100644 bl_data/readme/bl_permission.md create mode 100644 bl_demo/src/main/java/com/bailun/bl_demo/DemoApplication.java create mode 100644 bl_demo/src/main/java/com/bailun/bl_demo/permission/AopPermissionActivity.java create mode 100644 bl_demo/src/main/res/layout/activity_aop_permission.xml create mode 100644 bl_permission/.gitignore create mode 100644 bl_permission/bl_permission.iml create mode 100644 bl_permission/build.gradle create mode 100644 bl_permission/proguard-rules.pro create mode 100644 bl_permission/src/androidTest/java/com/bailun/wangjing/permissionlibrary/ExampleInstrumentedTest.java create mode 100644 bl_permission/src/main/AndroidManifest.xml create mode 100644 bl_permission/src/main/java/com/bailun/wangjing/permissionlibrary/AOPRequestPermission.java create mode 100644 bl_permission/src/main/java/com/bailun/wangjing/permissionlibrary/PermissionResult.java create mode 100644 bl_permission/src/main/java/com/bailun/wangjing/permissionlibrary/PermissionUtils.java create mode 100644 bl_permission/src/main/java/com/bailun/wangjing/permissionlibrary/activity/PermissionRequestActivity.java create mode 100644 bl_permission/src/main/java/com/bailun/wangjing/permissionlibrary/annotation/RequestPermission.java create mode 100644 bl_permission/src/main/java/com/bailun/wangjing/permissionlibrary/annotation/RequestPermissionForbid.java create mode 100644 bl_permission/src/main/java/com/bailun/wangjing/permissionlibrary/annotation/RequestPermissionRefuse.java create mode 100644 bl_permission/src/main/res/values/strings.xml create mode 100644 bl_permission/src/main/res/values/styles.xml create mode 100644 bl_permission/src/test/java/com/bailun/wangjing/permissionlibrary/ExampleUnitTest.java diff --git a/README.md b/README.md index ad64d39..b2686c3 100644 --- a/README.md +++ b/README.md @@ -36,3 +36,4 @@ 常见view整理 - [bl_btn](https://github.com/BailunMobileDev/devComLib/blob/master/bl_data/readme/bailunbtn.md) +- [bl_permission](https://github.com/BailunMobileDev/devComLib/blob/master/bl_data/readme/bl_permission.md) diff --git a/bl_commonlib/build.gradle b/bl_commonlib/build.gradle index 4385435..77304ba 100644 --- a/bl_commonlib/build.gradle +++ b/bl_commonlib/build.gradle @@ -32,4 +32,5 @@ dependencies { androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' api 'org.xutils:xutils:3.5.0' + api project(':bl_permission') } diff --git a/bl_data/readme/bl_permission.md b/bl_data/readme/bl_permission.md new file mode 100644 index 0000000..0dd22ce --- /dev/null +++ b/bl_data/readme/bl_permission.md @@ -0,0 +1,65 @@ +# Permissionlibrary说明 +Permissionlibrary是一个使用AOP来处理Android6.0后中运行时权限申请的库。 + +## 配置 +在项目的build.gradle中增加 +
+buildscript {
+
+    repositories {
+        google()
+        jcenter()
+    }
+    dependencies {
+        ......
+        classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4'//aop配置
+    }
+}
+
+在编译的主工程和编写Aop代码的模块的build.gradle增加 +
+apply plugin: 'android-aspectjx'
+
+## 用法 +在Activity或者Fragment中在需要权限的方法的上加上注解。需要两个参数一个是请求码request,一个是需要的权限的数组permissions。 +
+ @RequestPermission(permissions = {Manifest.permission.READ_EXTERNAL_STORAGE}, request = 0)
+    private void requestSinglePermission(){
+        tvInfo.setText("申请单个权限被允许");
+    }
+
+    @RequestPermission(permissions = {Manifest.permission.CALL_PHONE, Manifest.permission.CAMERA}, request = 1)
+    private void requestMultiplePermission(){
+        tvInfo.setText("申请多个权限被允许");
+    }
+
+因为权限的处理中用户可能会拒绝或者禁止提示,根据灵活性考虑,这个库默认在禁止的时候会弹出提示给用户,一旦自己加入注解就会覆盖默认实现。其他的交给使用者自己处理, +这里在相应处理的方法加入相关注解既可。 +
+@RequestPermissionRefuse
+    private void requestPermissionRefuse(int request){
+        switch (request){
+            case 0:
+                tvInfo.setText("申请单个权限被拒绝");
+                break;
+            case 1:
+                tvInfo.setText("申请多个权限被拒绝");
+                break;
+        }
+    }
+
+    @RequestPermissionForbid
+    private void requestPermission(int request){
+        switch (request){
+            case 0:
+                tvInfo.setText("申请单个权限被禁止");
+                break;
+            case 1:
+                tvInfo.setText("申请多个权限被禁止");
+                break;
+        }
+    }
+
+## 注意事项 ++ 禁止和拒绝的注解在静态方法上不会生效。请求权限的可以在静态方法上使用,但是不推荐这样使用。因为不好自己实现禁止和拒绝的逻辑。 ++ 不要在activity生命周期中的onResume使用,因为这边采取方法是自己开一个透明无界面,没大小的activity去请求权限的做法。在请求完之后会一直触发onResume所以造成无限循环。 \ No newline at end of file diff --git a/bl_demo/bl_demo.iml b/bl_demo/bl_demo.iml index efd86e6..30ab323 100644 --- a/bl_demo/bl_demo.iml +++ b/bl_demo/bl_demo.iml @@ -17,7 +17,8 @@