Skip to content

Commit a2ec232

Browse files
committed
优化权限拦截器接口命名
优化框架内部的代码逻辑
1 parent e1dc6ed commit a2ec232

23 files changed

+282
-192
lines changed

HelpDoc-en.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ XXPermissions.with(MainActivity.this)
123123

124124
#### What should I do if the dialog box pops up before and after the permission application
125125

126-
* An interceptor interface is provided inside the framework. It is enough to implement the interface provided [ IPermissionInterceptor ](/library/src/main/java/com/hjq/permissions/IPermissionInterceptor.java) in the framework. For specific implementation, please refer to the [ PermissionInterceptor ](app/src/main/java/com/hjq/permissions/demo/PermissionInterceptor.java) class provided in Demo. It is recommended to download the source code and read it, and then introduce the code into the project
126+
* An interceptor interface is provided inside the framework. It is enough to implement the interface provided [OnPermissionInterceptor](/library/src/main/java/com/hjq/permissions/OnPermissionInterceptor.java) in the framework. For specific implementation, please refer to the [ PermissionInterceptor ](app/src/main/java/com/hjq/permissions/demo/PermissionInterceptor.java) class provided in Demo. It is recommended to download the source code and read it, and then introduce the code into the project
127127

128128
* The way to use interception is also very simple. There are two specific settings, one for local settings and the other for global settings.
129129

HelpDoc-zh.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ XXPermissions.with(MainActivity.this)
129129

130130
#### 我想在申请前和申请后统一弹对话框该怎么处理
131131

132-
* 框架内部有提供一个拦截器接口,通过实现框架中提供的 [IPermissionInterceptor](/library/src/main/java/com/hjq/permissions/IPermissionInterceptor.java) 接口即可,具体实现可参考 Demo 中提供的 [PermissionInterceptor](app/src/main/java/com/hjq/permissions/demo/PermissionInterceptor.java) 类,建议下载源码后进行阅读,再将代码引入到项目中
132+
* 框架内部有提供一个拦截器接口,通过实现框架中提供的 [OnPermissionInterceptor](/library/src/main/java/com/hjq/permissions/OnPermissionInterceptor.java) 接口即可,具体实现可参考 Demo 中提供的 [PermissionInterceptor](app/src/main/java/com/hjq/permissions/demo/PermissionInterceptor.java) 类,建议下载源码后进行阅读,再将代码引入到项目中
133133

134134
* 使用拦截的方式也很简单,具体有两种设置方式,一种针对局部设置,另外一种是全局设置
135135

@@ -334,10 +334,10 @@ context.startActivity(intent);
334334

335335
#### 如何应对国内某些应用商店在明确拒绝权限后 48 小时内不允许再次申请的问题
336336

337-
* 首先这种属于业务逻辑的问题,框架本身是不会做这种事情的,但并非不能实现,这得益于框架良好的设计,框架内部提供了一个叫 IPermissionInterceptor 的拦截器类,当前有权限申请的时候,会走 requestPermissions 方法的回调,你可以重写这个方法的逻辑,先去判断要申请的权限是否在 48 小时内已经申请过了一次了,如果没有的话,就走权限申请的流程,如果有的话,那么就直接回调权限申请失败的方法。
337+
* 首先这种属于业务逻辑的问题,框架本身是不会做这种事情的,但并非不能实现,这得益于框架良好的设计,框架内部提供了一个叫 OnPermissionInterceptor 的拦截器类,当前有权限申请的时候,会走 requestPermissions 方法的回调,你可以重写这个方法的逻辑,先去判断要申请的权限是否在 48 小时内已经申请过了一次了,如果没有的话,就走权限申请的流程,如果有的话,那么就直接回调权限申请失败的方法。
338338

339339
```java
340-
public final class PermissionInterceptor implements IPermissionInterceptor {
340+
public final class PermissionInterceptor implements OnPermissionInterceptor {
341341

342342
private static final String SP_NAME_PERMISSION_REQUEST_TIME_RECORD = "permission_request_time_record";
343343

@@ -359,7 +359,7 @@ public final class PermissionInterceptor implements IPermissionInterceptor {
359359
}
360360
sharedPreferences.edit().putLong(permissionKey, System.currentTimeMillis()).apply();
361361
// 如果之前没有申请过权限,或者距离上次申请已经超过了 48 个小时,则进行申请权限
362-
IPermissionInterceptor.super.requestPermissions(activity, allPermissions, callback);
362+
OnPermissionInterceptor.super.requestPermissions(activity, allPermissions, callback);
363363
}
364364

365365
@Override

README-en.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
* project address: [Github](https://github.com/getActivity/XXPermissions)
88

9-
* [Click here to download demo apk directly](https://github.com/getActivity/XXPermissions/releases/download/18.5/XXPermissions.apk)
9+
* [Click here to download demo apk directly](https://github.com/getActivity/XXPermissions/releases/download/18.6/XXPermissions.apk)
1010

1111
![](picture/en/demo_request_permission_activity.jpg) ![](picture/en/demo_request_single_permission.jpg) ![](picture/en/demo_request_group_permission.jpg)
1212

@@ -55,7 +55,7 @@ android {
5555
5656
dependencies {
5757
// Permission request framework:https://github.com/getActivity/XXPermissions
58-
implementation 'com.github.getActivity:XXPermissions:18.5'
58+
implementation 'com.github.getActivity:XXPermissions:18.6'
5959
}
6060
```
6161

@@ -190,7 +190,7 @@ XXPermissions.startPermissionActivity(Fragment fragment, String... permissions,
190190
// Setting not to trigger error detection mechanism (global setting)
191191
XXPermissions.setCheckMode(false);
192192
// Set permission request interceptor (global setting)
193-
XXPermissions.setInterceptor(new IPermissionInterceptor() {});
193+
XXPermissions.setInterceptor(new OnPermissionInterceptor() {});
194194
```
195195

196196
#### Framework proguard rules
@@ -217,7 +217,7 @@ XXPermissions.setInterceptor(new IPermissionInterceptor() {});
217217

218218
| Adaptation details | [XXPermissions](https://github.com/getActivity/XXPermissions) | [AndPermission](https://github.com/yanzhenjie/AndPermission) | [PermissionX](https://github.com/guolindev/PermissionX) | [AndroidUtilCode-PermissionUtils](https://github.com/Blankj/AndroidUtilCode) | [PermissionsDispatcher](https://github.com/permissions-dispatcher/PermissionsDispatcher) | [RxPermissions](https://github.com/tbruyelle/RxPermissions) | [EasyPermissions](https://github.com/googlesamples/easypermissions) |
219219
|:-------------------------------------------------------------:| :----------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: |
220-
| Corresponding version | 18.5 | 2.0.3 | 1.7.1 | 1.31.0 | 4.9.2 | 0.12 | 3.0.0 |
220+
| Corresponding version | 18.6 | 2.0.3 | 1.7.1 | 1.31.0 | 4.9.2 | 0.12 | 3.0.0 |
221221
| Number of issues | [![](https://img.shields.io/github/issues/getActivity/XXPermissions.svg)](https://github.com/getActivity/XXPermissions/issues) | [![](https://img.shields.io/github/issues/yanzhenjie/AndPermission.svg)](https://github.com/yanzhenjie/AndPermission/issues) | [![](https://img.shields.io/github/issues/guolindev/PermissionX.svg)](https://github.com/guolindev/PermissionX/issues) | [![](https://img.shields.io/github/issues/Blankj/AndroidUtilCode.svg)](https://github.com/Blankj/AndroidUtilCode/issues) | [![](https://img.shields.io/github/issues/permissions-dispatcher/PermissionsDispatcher.svg)](https://github.com/permissions-dispatcher/PermissionsDispatcher/issues) | [![](https://img.shields.io/github/issues/tbruyelle/RxPermissions.svg)](https://github.com/tbruyelle/RxPermissions/issues) | [![](https://img.shields.io/github/issues/googlesamples/easypermissions.svg)](https://github.com/googlesamples/easypermissions/issues) |
222222
| Framework volume | 85 KB | 127 KB | 97 KB | 500 KB | 99 KB | 28 KB | 48 KB |
223223
| Framework Maintenance Status | **In maintenance** | stop maintenance | **In maintenance** | stop maintenance | stop maintenance | stop maintenance | stop maintenance |

README.md

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
* 博文地址:[一句代码搞定权限请求,从未如此简单](https://www.jianshu.com/p/c69ff8a445ed)
1010

11-
* 可以扫码下载 Demo 进行演示或者测试,如果扫码下载不了的,[点击此处可直接下载](https://github.com/getActivity/XXPermissions/releases/download/18.5/XXPermissions.apk)
11+
* 可以扫码下载 Demo 进行演示或者测试,如果扫码下载不了的,[点击此处可直接下载](https://github.com/getActivity/XXPermissions/releases/download/18.6/XXPermissions.apk)
1212

1313
![](picture/zh/download_demo_apk_qr_code.png)
1414

@@ -61,7 +61,7 @@ android {
6161
6262
dependencies {
6363
// 权限请求框架:https://github.com/getActivity/XXPermissions
64-
implementation 'com.github.getActivity:XXPermissions:18.5'
64+
implementation 'com.github.getActivity:XXPermissions:18.6'
6565
}
6666
```
6767

@@ -196,7 +196,7 @@ XXPermissions.startPermissionActivity(Fragment fragment, String... permissions,
196196
// 设置不触发错误检测机制(全局设置)
197197
XXPermissions.setCheckMode(false);
198198
// 设置权限申请拦截器(全局设置)
199-
XXPermissions.setInterceptor(new IPermissionInterceptor() {});
199+
XXPermissions.setInterceptor(new OnPermissionInterceptor() {});
200200
```
201201

202202
#### 框架混淆规则
@@ -223,7 +223,7 @@ XXPermissions.setInterceptor(new IPermissionInterceptor() {});
223223

224224
| 适配细节 | [XXPermissions](https://github.com/getActivity/XXPermissions) | [AndPermission](https://github.com/yanzhenjie/AndPermission) | [PermissionX](https://github.com/guolindev/PermissionX) | [AndroidUtilCode-PermissionUtils](https://github.com/Blankj/AndroidUtilCode) | [PermissionsDispatcher](https://github.com/permissions-dispatcher/PermissionsDispatcher) | [RxPermissions](https://github.com/tbruyelle/RxPermissions) | [EasyPermissions](https://github.com/googlesamples/easypermissions) |
225225
| :--------: | :------------: | :------------: | :------------: | :------------: | :------------: | :------------: | :------------: |
226-
| 对应版本 | 18.5 | 2.0.3 | 1.7.1 | 1.31.0 | 4.9.2 | 0.12 | 3.0.0 |
226+
| 对应版本 | 18.6 | 2.0.3 | 1.7.1 | 1.31.0 | 4.9.2 | 0.12 | 3.0.0 |
227227
| issues 数 | [![](https://img.shields.io/github/issues/getActivity/XXPermissions.svg)](https://github.com/getActivity/XXPermissions/issues) | [![](https://img.shields.io/github/issues/yanzhenjie/AndPermission.svg)](https://github.com/yanzhenjie/AndPermission/issues) | [![](https://img.shields.io/github/issues/guolindev/PermissionX.svg)](https://github.com/guolindev/PermissionX/issues) | [![](https://img.shields.io/github/issues/Blankj/AndroidUtilCode.svg)](https://github.com/Blankj/AndroidUtilCode/issues) | [![](https://img.shields.io/github/issues/permissions-dispatcher/PermissionsDispatcher.svg)](https://github.com/permissions-dispatcher/PermissionsDispatcher/issues) | [![](https://img.shields.io/github/issues/tbruyelle/RxPermissions.svg)](https://github.com/tbruyelle/RxPermissions/issues) | [![](https://img.shields.io/github/issues/googlesamples/easypermissions.svg)](https://github.com/googlesamples/easypermissions/issues) |
228228
| 框架体积 | 85 KB | 127 KB | 97 KB | 500 KB | 99 KB | 28 KB | 48 KB |
229229
| 框架维护状态 |**维护中**| 停止维护 | 停止维护 | 停止维护 | 停止维护 | 停止维护 | 停止维护 |
@@ -438,18 +438,6 @@ XXPermissions.setInterceptor(new IPermissionInterceptor() {});
438438

439439
![](https://raw.githubusercontent.com/getActivity/Donate/master/picture/pay_ali.png) ![](https://raw.githubusercontent.com/getActivity/Donate/master/picture/pay_wechat.png)
440440

441-
#### 广告区
442-
443-
* 我现在任腾讯云服务器推广大使,大家如果有购买服务器的需求,可以通过下面的链接购买
444-
445-
[![](https://upload-dianshi-1255598498.file.myqcloud.com/upload/nodir/345X200-9ae456f58874df499adf7c331c02cb0fed12b81d.jpg)](https://curl.qcloud.com/A6cYskvv)
446-
447-
[【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中](https://curl.qcloud.com/A6cYskvv)
448-
449-
[![](https://upload-dianshi-1255598498.file.myqcloud.com/345-200-b28f7dee9552f4241ea6a543f15a9798049701d4.jpg)](https://curl.qcloud.com/up4fQsdn)
450-
451-
[【腾讯云】中小企业福利专场,多款刚需产品,满足企业通用场景需求](https://curl.qcloud.com/up4fQsdn)
452-
453441
## License
454442

455443
```text

app/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ android {
77
applicationId "com.hjq.permissions.demo"
88
minSdkVersion 16
99
targetSdkVersion 34
10-
versionCode 1805
11-
versionName "18.5"
10+
versionCode 1806
11+
versionName "18.6"
1212
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1313
}
1414

@@ -61,7 +61,7 @@ dependencies {
6161
implementation 'com.android.support:appcompat-v7:28.0.0'
6262

6363
// 吐司框架:https://github.com/getActivity/Toaster
64-
implementation 'com.github.getActivity:Toaster:12.5'
64+
implementation 'com.github.getActivity:Toaster:12.6'
6565

6666
// 内存泄漏检测:https://github.com/square/leakcanary
6767
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.12'

app/src/main/AndroidManifest.xml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,6 @@
3030
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
3131
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
3232

33-
<uses-permission android:name="android.permission.SEND_SMS" />
34-
<uses-permission android:name="android.permission.RECEIVE_SMS" />
35-
3633
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
3734

3835
<uses-permission android:name="android.permission.BODY_SENSORS" />
@@ -103,6 +100,11 @@
103100
</intent-filter>
104101
</service>
105102

103+
<!-- 告知 XXPermissions 当前项目已经适配了分区存储特性 -->
104+
<meta-data
105+
android:name="ScopedStorage"
106+
android:value="true" />
107+
106108
</application>
107109

108110
</manifest>

0 commit comments

Comments
 (0)