Skip to content

Commit afea438

Browse files
committed
优化 API 命名和注释
优化传入非法权限的异常提示 移除 startApplicationDetails 方法
1 parent 36c883c commit afea438

File tree

13 files changed

+76
-91
lines changed

13 files changed

+76
-91
lines changed

.gitignore

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
/.gradle
2-
/.idea
3-
/build
4-
*/build
5-
/captures
6-
/.cxx
7-
*/.cxx
8-
/.externalNativeBuild
1+
.gradle
2+
.idea
3+
.cxx
4+
.externalNativeBuild
5+
build
6+
captures
97

108
._*
119
*.iml

HelpDoc.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
* [Android 11 存储权限适配](#android-11-存储权限适配)
66

7+
* [什么情况下需要适配分区存储特性](#什么情况下需要适配分区存储特性)
8+
79
* [我想在申请前和申请后统一弹对话框该怎么处理](#我想在申请前和申请后统一弹对话框该怎么处理)
810

911
* [如何在回调中判断哪些权限被永久拒绝了](#如何在回调中判断哪些权限被永久拒绝了)
@@ -119,7 +121,7 @@ public class MyApplication extends Application {
119121
public void onCreate() {
120122
super.onCreate();
121123
// 设置权限申请拦截器
122-
XXPermissions.setPermissionInterceptor(new PermissionInterceptor());
124+
XXPermissions.setInterceptor(new PermissionInterceptor());
123125
}
124126
}
125127
```
@@ -229,7 +231,7 @@ XXPermissions.with(this)
229231
@Override
230232
public void onDenied(List<String> permissions, boolean never) {
231233
if (never && permissions.contains(Permission.RECORD_AUDIO) &&
232-
XXPermissions.isPermissionPermanentDenied(MainActivity.this, Permission.RECORD_AUDIO)) {
234+
XXPermissions.isPermanentDenied(MainActivity.this, Permission.RECORD_AUDIO)) {
233235
toast("录音权限被永久拒绝了");
234236
}
235237
}

README.md

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ android {
2626
2727
dependencies {
2828
// 权限请求框架:https://github.com/getActivity/XXPermissions
29-
implementation 'com.hjq:xxpermissions:10.2'
29+
implementation 'com.hjq:xxpermissions:10.5'
3030
}
3131
```
3232

@@ -51,7 +51,7 @@ public final class XxxApplication extends Application {
5151
@Override
5252
public void onCreate() {
5353
super.onCreate();
54-
// 告诉框架,当前项目已适配分区存储特性
54+
// 当前项目是否已经适配了分区存储的特性
5555
XXPermissions.setScopedStorage(true);
5656
}
5757
}
@@ -107,8 +107,8 @@ public class XxxActivity extends AppCompatActivity {
107107
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
108108
super.onActivityResult(requestCode, resultCode, data);
109109
if (requestCode == XXPermissions.REQUEST_CODE) {
110-
if (XXPermissions.isGrantedPermission(this, Permission.RECORD_AUDIO) &&
111-
XXPermissions.isGrantedPermission(this, Permission.Group.CALENDAR)) {
110+
if (XXPermissions.isGranted(this, Permission.RECORD_AUDIO) &&
111+
XXPermissions.isGranted(this, Permission.Group.CALENDAR)) {
112112
toast("用户已经在权限设置页授予了录音和日历权限");
113113
} else {
114114
toast("用户没有在权限设置页授予权限");
@@ -122,7 +122,7 @@ public class XxxActivity extends AppCompatActivity {
122122

123123
* 我们都知道,如果用户全部授予只会调用 **onGranted** 方法,如果用户全部拒绝只会调用 **onDenied** 方法。
124124

125-
* 但是还有一种情况,如果在请求多组权限的情况下,这些权限不是被全部授予或者全部拒绝了,而是部分授权部分拒绝这种情况,框架会如何处理回调呢?
125+
* 但是还有一种情况,如果在请求多个权限的情况下,这些权限不是被全部授予或者全部拒绝了,而是部分授权部分拒绝这种情况,框架会如何处理回调呢?
126126

127127
* 框架会先调用 **onDenied** 方法,再调用 **onGranted** 方法。其中我们可以通过 **onGranted** 方法中的 **all** 参数来判断权限是否全部授予了。
128128

@@ -134,8 +134,8 @@ public class XxxActivity extends AppCompatActivity {
134134

135135
| 功能及细节 | [XXPermissions](https://github.com/getActivity/XXPermissions) | [AndPermission](https://github.com/yanzhenjie/AndPermission) | [RxPermissions](https://github.com/tbruyelle/RxPermissions) | [PermissionsDispatcher](https://github.com/permissions-dispatcher/PermissionsDispatcher) | [EasyPermissions](https://github.com/googlesamples/easypermissions) | [PermissionX](https://github.com/guolindev/PermissionX) | [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode) |
136136
| :--------: | :------------: | :------------: | :------------: | :------------: | :------------: | :------------: | :------------: |
137-
| 对应版本 | 10.2 | 2.0.3 | 0.12 | 4.8.0 | 3.0.0 | 1.4.0 | 1.30.5 |
138-
| 框架体积 | [25 KB](https://bintray.com/getactivity/maven/xxpermissions#files/com/hjq/xxpermissions) | [127 KB](https://mvnrepository.com/artifact/com.yanzhenjie/permission) | [28 KB](https://jitpack.io/#com.github.tbruyelle/rxpermissions) | [91 KB](https://bintray.com/hotchemi/org.permissionsdispatcher/permissionsdispatcher-processor#files/org/permissionsdispatcher/permissionsdispatcher-processor) | [48 KB](https://bintray.com/easygoogle/EasyPermissions/easypermissions#files/pub/devrel/easypermissions) | [32 KB](https://bintray.com/guolindev/maven/permissionx#files/com/permissionx/guolindev/permissionx) | [483 KB](https://bintray.com/blankj/maven/UtilCode#files/com/blankj/utilcode) |
137+
| 对应版本 | 10.5 | 2.0.3 | 0.12 | 4.8.0 | 3.0.0 | 1.4.0 | 1.30.5 |
138+
| 框架体积 | [24 KB](https://bintray.com/getactivity/maven/xxpermissions#files/com/hjq/xxpermissions) | [127 KB](https://mvnrepository.com/artifact/com.yanzhenjie/permission) | [28 KB](https://jitpack.io/#com.github.tbruyelle/rxpermissions) | [91 KB](https://bintray.com/hotchemi/org.permissionsdispatcher/permissionsdispatcher-processor#files/org/permissionsdispatcher/permissionsdispatcher-processor) | [48 KB](https://bintray.com/easygoogle/EasyPermissions/easypermissions#files/pub/devrel/easypermissions) | [32 KB](https://bintray.com/guolindev/maven/permissionx#files/com/permissionx/guolindev/permissionx) | [483 KB](https://bintray.com/blankj/maven/UtilCode#files/com/blankj/utilcode) |
139139
| 安装包权限 ||||||||
140140
| 悬浮窗权限 ||||||||
141141
| 通知栏权限 ||||||||
@@ -179,17 +179,15 @@ public class XxxActivity extends AppCompatActivity {
179179

180180
#### 框架亮点
181181

182-
* 简洁易用,采用链式调用的方式,使用只需一句代码
183-
184-
* 体积感人,功能在同类框架中最全的,但是体积是最小的
185-
186182
* 首款也是唯一一款适配 Android 11 的权限请求框架
187183

188184
* 首款也是唯一一款适配所有 Android 版本的权限请求框架
189185

190-
* 无论在多么极端恶劣的环境下申请权限,框架依然坚挺
186+
* 简洁易用:采用链式调用的方式,使用只需一句代码
187+
188+
* 体积感人:功能在同类框架中最全的,但是体积是最小的
191189

192-
* 支持单个权限、多个权限、单个权限组、多个权限组请求
190+
* 适配极端情况:无论在多么极端恶劣的环境下申请权限,框架依然坚挺
193191

194192
* 向下兼容属性:新权限在旧系统可以正常申请,框架会做自动适配,无需调用者适配
195193

XXPermissions.apk

85.8 KB
Binary file not shown.

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ android {
77
applicationId "com.hjq.permissions.demo"
88
minSdkVersion 14
99
targetSdkVersion 30
10-
versionCode 1020
11-
versionName "10.2"
10+
versionCode 1050
11+
versionName "10.5"
1212
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1313
}
1414

app/src/main/java/com/hjq/permissions/demo/AppApplication.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public void onCreate() {
2222
ToastUtils.init(this, new ToastWhiteStyle(getApplicationContext()));
2323

2424
// 设置权限申请拦截器
25-
XXPermissions.setPermissionInterceptor(new PermissionInterceptor());
25+
XXPermissions.setInterceptor(new PermissionInterceptor());
2626

2727
// 告诉框架,当前项目已适配分区存储特性
2828
//XXPermissions.setScopedStorage(true);

app/src/main/java/com/hjq/permissions/demo/MainActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ public void onGranted(List<String> permissions, boolean all) {
163163

164164
} else if (viewId == R.id.btn_main_app_details) {
165165

166-
XXPermissions.startApplicationDetails(this);
166+
XXPermissions.startPermissionActivity(this);
167167
}
168168
}
169169

library/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ android {
66

77
defaultConfig {
88
minSdkVersion 11
9-
versionCode 1020
10-
versionName "10.2"
9+
versionCode 1050
10+
versionName "10.5"
1111
}
1212

1313
// 使用 JDK 1.8
@@ -30,7 +30,7 @@ publish {
3030
userOrg = 'getactivity'
3131
groupId = 'com.hjq'
3232
artifactId = 'xxpermissions'
33-
publishVersion = '10.2'
33+
publishVersion = '10.5'
3434
desc = 'Android 6.0 permissions adaptation framework'
3535
website = "https://github.com/getActivity/XXPermissions"
3636
}

library/src/main/java/com/hjq/permissions/Permission.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,7 @@ private Permission() {}
116116
*/
117117
public static final class Group {
118118

119-
/**
120-
* 存储权限
121-
*/
119+
/** 存储权限 */
122120
public static final String[] STORAGE = new String[]{
123121
Permission.READ_EXTERNAL_STORAGE,
124122
Permission.WRITE_EXTERNAL_STORAGE};

library/src/main/java/com/hjq/permissions/PermissionChecker.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,15 @@ static boolean checkActivityStatus(Activity activity, boolean debugMode) {
3838

3939
if (activity.isFinishing()) {
4040
if (debugMode) {
41-
// 这个 Activity 对象当前不能是结束状态,这种情况常出现在执行异步请求后申请权限,请手动在外层代码做判断
41+
// 这个 Activity 对象当前不能是关闭状态,这种情况常出现在执行异步请求后申请权限,请自行在外层判断 Activity 状态是否正常之后再进入权限申请
4242
throw new IllegalStateException("The Activity has been finishing, Please manually determine the status of the Activity");
4343
}
4444
return false;
4545
}
4646

4747
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && activity.isDestroyed()) {
4848
if (debugMode) {
49-
// 这个 Activity 对象当前不能是销毁状态,这种情况常出现在执行异步请求后申请权限,请手动在外层代码做判断
49+
// 这个 Activity 对象当前不能是销毁状态,这种情况常出现在执行异步请求后申请权限,请自行在外层判断 Activity 状态是否正常之后再进入权限申请
5050
throw new IllegalStateException("The Activity has been destroyed, Please manually determine the status of the Activity");
5151
}
5252
return false;
@@ -86,7 +86,7 @@ static boolean checkPermissionArgument(List<String> requestPermissions, boolean
8686
for (String permission : requestPermissions) {
8787
if (!allPermissions.contains(permission)) {
8888
// 请不要申请危险权限和特殊权限之外的权限
89-
throw new IllegalArgumentException("Please do not apply for permissions other than dangerous and special permissions");
89+
throw new IllegalArgumentException("The " + permission + " is not a dangerous permission or special permission");
9090
}
9191
}
9292
}
@@ -108,7 +108,7 @@ static void checkStoragePermission(Context context, List<String> requestPermissi
108108
return;
109109
}
110110

111-
int cookie = PermissionUtils.findApkCookie(context);
111+
int cookie = PermissionUtils.findApkPathCookie(context);
112112
if (cookie == -1) {
113113
return;
114114
}
@@ -138,9 +138,10 @@ static void checkStoragePermission(Context context, List<String> requestPermissi
138138
// 如果在已经适配 Android 11 的情况下
139139
if (targetSdkVersion >= Build.VERSION_CODES.R &&
140140
!requestPermissions.contains(Permission.MANAGE_EXTERNAL_STORAGE) && !scopedStorage) {
141-
// 1. 适配分区存储的特性,并在 Application.onCreate 中调用 XXPermissions.setScopedStorage(true)
141+
// 1. 适配分区存储的特性,并在 Application 初始化时调用 XXPermissions.setScopedStorage(true)
142142
// 2. 如果不想适配分区存储,则需要使用 Permission.MANAGE_EXTERNAL_STORAGE 来申请权限
143143
// 上面两种方式需要二选一,否则无法在 Android 11 的设备上正常读写外部存储上的文件
144+
// 如果不知道该怎么选择,可以看文档:https://github.com/getActivity/XXPermissions/blob/master/HelpDoc
144145
throw new IllegalArgumentException("Please adapt the scoped storage, or use the MANAGE_EXTERNAL_STORAGE permission");
145146
}
146147
break;

0 commit comments

Comments
 (0)