Skip to content

Commit bf65482

Browse files
author
HJQ
committed
修复悬浮窗、安装权限和危险权限一起申请的一个细节上的Bug
1 parent 0faf6f6 commit bf65482

File tree

8 files changed

+24
-17
lines changed

8 files changed

+24
-17
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
#### 集成步骤
1010

1111
dependencies {
12-
implementation 'com.hjq:xxpermissions:5.3'
12+
implementation 'com.hjq:xxpermissions:5.5'
1313
}
1414

1515
#### 一句代码搞定权限请求,从未如此简单

XXPermissions.apk

-88.7 KB
Binary file not shown.

app/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ apply plugin: 'com.android.application'
22

33
android {
44
compileSdkVersion 26
5-
buildToolsVersion "27.0.3"
5+
66
defaultConfig {
77
applicationId "com.hjq.permissions.demo"
88
minSdkVersion 14
99
targetSdkVersion 26
10-
versionCode 53
11-
versionName "5.3"
10+
versionCode 55
11+
versionName "5.5"
1212
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1313
}
1414
buildTypes {
@@ -23,5 +23,5 @@ dependencies {
2323
implementation fileTree(include: ['*.jar'], dir: 'libs')
2424
implementation project(':library')
2525
implementation 'com.android.support:appcompat-v7:26.1.0'
26-
implementation 'com.hjq:toast:5.5'
26+
implementation 'com.hjq:toast:5.8'
2727
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,4 @@ public void isHasPermission(View view) {
6969
public void gotoPermissionSettings(View view) {
7070
XXPermissions.gotoPermissionSettings(MainActivity.this);
7171
}
72-
}
72+
}

library/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ android {
88
defaultConfig {
99
minSdkVersion 11
1010
targetSdkVersion 26
11-
versionCode 53
12-
versionName "5.3"
11+
versionCode 55
12+
versionName "5.5"
1313
}
1414
}
1515

1616
publish {
1717
userOrg = 'getactivity'//填写bintray用户名,注意大小写
1818
groupId = 'com.hjq'//定义的maven group id最终引用形式
1919
artifactId = 'xxpermissions'//maven的artifact id
20-
version = '5.3'//maven 上发布版本号
20+
version = '5.5'//maven 上发布版本号
2121
description = 'Android 6.0 permissions adaptation framework'//描述,自己定义
2222
website = "https://github.com/getActivity/XXPermissions"//项目在github中的地址
2323
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public final class PermissionFragment extends Fragment implements Runnable {
2929

3030
private final static SparseArray<OnPermission> sContainer = new SparseArray<>();
3131

32-
public static PermissionFragment newInstant(ArrayList<String> permissions, boolean constant) {
32+
public static PermissionFragment newInstance(ArrayList<String> permissions, boolean constant) {
3333
PermissionFragment fragment = new PermissionFragment();
3434
Bundle bundle = new Bundle();
3535

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

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,11 @@ static ArrayList<String> getFailPermissions(Context context, List<String> permis
128128
*/
129129
static boolean isRequestDeniedPermission(Activity activity, List<String> failPermissions) {
130130
for (String permission : failPermissions) {
131+
// 安装权限和浮窗权限不算,本身申请方式和危险权限申请方式不同,因为没有永久拒绝的选项,所以这里返回false
132+
if (permission.equals(Permission.REQUEST_INSTALL_PACKAGES) || permission.equals(Permission.SYSTEM_ALERT_WINDOW)) {
133+
continue;
134+
}
135+
131136
// 检查是否还有权限还能继续申请的(这里指没有被授予的权限但是也没有被永久拒绝的)
132137
if (!checkSinglePermissionPermanentDenied(activity, permission)) {
133138
return true;
@@ -143,9 +148,11 @@ static boolean isRequestDeniedPermission(Activity activity, List<String> failPer
143148
* @param permissions 请求的权限
144149
*/
145150
static boolean checkMorePermissionPermanentDenied(Activity activity, List<String> permissions) {
146-
147151
for (String permission : permissions) {
148-
152+
// 安装权限和浮窗权限不算,本身申请方式和危险权限申请方式不同,因为没有永久拒绝的选项,所以这里返回false
153+
if (permission.equals(Permission.REQUEST_INSTALL_PACKAGES) || permission.equals(Permission.SYSTEM_ALERT_WINDOW)) {
154+
continue;
155+
}
149156
if (checkSinglePermissionPermanentDenied(activity, permission)) {
150157
return true;
151158
}
@@ -161,10 +168,10 @@ static boolean checkMorePermissionPermanentDenied(Activity activity, List<String
161168
*/
162169
static boolean checkSinglePermissionPermanentDenied(Activity activity, String permission) {
163170

164-
// 安装权限和浮窗权限不算,本身申请方式和危险权限申请方式不同,因为没有永久拒绝的选项,所以这里返回false
165-
if (permission.equals(Permission.REQUEST_INSTALL_PACKAGES) || permission.equals(Permission.SYSTEM_ALERT_WINDOW)) {
166-
return false;
167-
}
171+
// // 安装权限和浮窗权限不算,本身申请方式和危险权限申请方式不同,因为没有永久拒绝的选项,所以这里返回false
172+
// if (permission.equals(Permission.REQUEST_INSTALL_PACKAGES) || permission.equals(Permission.SYSTEM_ALERT_WINDOW)) {
173+
// return false;
174+
// }
168175

169176
// 检测8.0的两个新权限
170177
if (permission.equals(Permission.ANSWER_PHONE_CALLS) || permission.equals(Permission.READ_PHONE_NUMBERS)) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public void request(OnPermission call) {
104104
// 检测权限有没有在清单文件中注册
105105
PermissionUtils.checkPermissions(mActivity, mPermissions);
106106
// 申请没有授予过的权限
107-
PermissionFragment.newInstant((new ArrayList<>(mPermissions)), mConstant).prepareRequest(mActivity, call);
107+
PermissionFragment.newInstance((new ArrayList<>(mPermissions)), mConstant).prepareRequest(mActivity, call);
108108
}
109109
}
110110

0 commit comments

Comments
 (0)