Skip to content

Commit

Permalink
修复悬浮窗、安装权限和危险权限一起申请的一个细节上的Bug
Browse files Browse the repository at this point in the history
  • Loading branch information
HJQ committed Mar 12, 2019
1 parent 0faf6f6 commit bf65482
Show file tree
Hide file tree
Showing 8 changed files with 24 additions and 17 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#### 集成步骤

dependencies {
implementation 'com.hjq:xxpermissions:5.3'
implementation 'com.hjq:xxpermissions:5.5'
}

#### 一句代码搞定权限请求,从未如此简单
Expand Down
Binary file modified XXPermissions.apk
Binary file not shown.
8 changes: 4 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ apply plugin: 'com.android.application'

android {
compileSdkVersion 26
buildToolsVersion "27.0.3"

defaultConfig {
applicationId "com.hjq.permissions.demo"
minSdkVersion 14
targetSdkVersion 26
versionCode 53
versionName "5.3"
versionCode 55
versionName "5.5"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
Expand All @@ -23,5 +23,5 @@ dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation project(':library')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.hjq:toast:5.5'
implementation 'com.hjq:toast:5.8'
}
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,4 @@ public void isHasPermission(View view) {
public void gotoPermissionSettings(View view) {
XXPermissions.gotoPermissionSettings(MainActivity.this);
}
}
}
6 changes: 3 additions & 3 deletions library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ android {
defaultConfig {
minSdkVersion 11
targetSdkVersion 26
versionCode 53
versionName "5.3"
versionCode 55
versionName "5.5"
}
}

publish {
userOrg = 'getactivity'//填写bintray用户名,注意大小写
groupId = 'com.hjq'//定义的maven group id最终引用形式
artifactId = 'xxpermissions'//maven的artifact id
version = '5.3'//maven 上发布版本号
version = '5.5'//maven 上发布版本号
description = 'Android 6.0 permissions adaptation framework'//描述,自己定义
website = "https://github.com/getActivity/XXPermissions"//项目在github中的地址
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public final class PermissionFragment extends Fragment implements Runnable {

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

public static PermissionFragment newInstant(ArrayList<String> permissions, boolean constant) {
public static PermissionFragment newInstance(ArrayList<String> permissions, boolean constant) {
PermissionFragment fragment = new PermissionFragment();
Bundle bundle = new Bundle();

Expand Down
19 changes: 13 additions & 6 deletions library/src/main/java/com/hjq/permissions/PermissionUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,11 @@ static ArrayList<String> getFailPermissions(Context context, List<String> permis
*/
static boolean isRequestDeniedPermission(Activity activity, List<String> failPermissions) {
for (String permission : failPermissions) {
// 安装权限和浮窗权限不算,本身申请方式和危险权限申请方式不同,因为没有永久拒绝的选项,所以这里返回false
if (permission.equals(Permission.REQUEST_INSTALL_PACKAGES) || permission.equals(Permission.SYSTEM_ALERT_WINDOW)) {
continue;
}

// 检查是否还有权限还能继续申请的(这里指没有被授予的权限但是也没有被永久拒绝的)
if (!checkSinglePermissionPermanentDenied(activity, permission)) {
return true;
Expand All @@ -143,9 +148,11 @@ static boolean isRequestDeniedPermission(Activity activity, List<String> failPer
* @param permissions 请求的权限
*/
static boolean checkMorePermissionPermanentDenied(Activity activity, List<String> permissions) {

for (String permission : permissions) {

// 安装权限和浮窗权限不算,本身申请方式和危险权限申请方式不同,因为没有永久拒绝的选项,所以这里返回false
if (permission.equals(Permission.REQUEST_INSTALL_PACKAGES) || permission.equals(Permission.SYSTEM_ALERT_WINDOW)) {
continue;
}
if (checkSinglePermissionPermanentDenied(activity, permission)) {
return true;
}
Expand All @@ -161,10 +168,10 @@ static boolean checkMorePermissionPermanentDenied(Activity activity, List<String
*/
static boolean checkSinglePermissionPermanentDenied(Activity activity, String permission) {

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

// 检测8.0的两个新权限
if (permission.equals(Permission.ANSWER_PHONE_CALLS) || permission.equals(Permission.READ_PHONE_NUMBERS)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public void request(OnPermission call) {
// 检测权限有没有在清单文件中注册
PermissionUtils.checkPermissions(mActivity, mPermissions);
// 申请没有授予过的权限
PermissionFragment.newInstant((new ArrayList<>(mPermissions)), mConstant).prepareRequest(mActivity, call);
PermissionFragment.newInstance((new ArrayList<>(mPermissions)), mConstant).prepareRequest(mActivity, call);
}
}

Expand Down

0 comments on commit bf65482

Please sign in to comment.