Skip to content

Commit 14fcb20

Browse files
committed
修正:如果是unity申请悬浮权限,当权限设置页面打开时,app切换到后台再切回,设置页面会被强制关闭,此时正常流程不会触发
1 parent 7fa9fcf commit 14fcb20

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,8 @@ static final class PermissionActivityImpl extends UtilsTransActivity.TransActivi
368368
private static final int TYPE_WRITE_SETTINGS = 0x02;
369369
private static final int TYPE_DRAW_OVERLAYS = 0x03;
370370

371+
private static int currentRequestCode = -1;
372+
371373
private static PermissionActivityImpl INSTANCE = new PermissionActivityImpl();
372374

373375
public static void start(final int type) {
@@ -403,8 +405,10 @@ public void run() {
403405
}
404406
requestPermissions(activity);
405407
} else if (type == TYPE_WRITE_SETTINGS) {
408+
currentRequestCode = TYPE_WRITE_SETTINGS;
406409
startWriteSettingsActivity(activity, TYPE_WRITE_SETTINGS);
407410
} else if (type == TYPE_DRAW_OVERLAYS) {
411+
currentRequestCode = TYPE_DRAW_OVERLAYS;
408412
startOverlayPermissionActivity(activity, TYPE_DRAW_OVERLAYS);
409413
} else {
410414
activity.finish();
@@ -441,8 +445,22 @@ public boolean dispatchTouchEvent(UtilsTransActivity activity, MotionEvent ev) {
441445
return true;
442446
}
443447

448+
@Override
449+
public void onDestroy(final UtilsTransActivity activity) {
450+
//如果是unity调用,app从后台切回,当前activity会被强制关闭,此时正常流程不会触发,所以在这里检测
451+
if (currentRequestCode != -1) {
452+
checkRequestCallback(currentRequestCode);
453+
currentRequestCode = -1;
454+
}
455+
super.onDestroy(activity);
456+
}
457+
444458
@Override
445459
public void onActivityResult(UtilsTransActivity activity, int requestCode, int resultCode, Intent data) {
460+
activity.finish();
461+
}
462+
463+
private void checkRequestCallback(int requestCode) {
446464
if (requestCode == TYPE_WRITE_SETTINGS) {
447465
if (sSimpleCallback4WriteSettings == null) return;
448466
if (isGrantedWriteSettings()) {
@@ -465,7 +483,6 @@ public void run() {
465483
}
466484
}, 100);
467485
}
468-
activity.finish();
469486
}
470487
}
471488

0 commit comments

Comments
 (0)