Skip to content

Commit f407df4

Browse files
author
limiaolong
committed
unity申请悬浮窗权限时,如果在权限设置界面,app切到后台,再切回来时回调不会被执行
1 parent cb397cf commit f407df4

File tree

1 file changed

+33
-14
lines changed

1 file changed

+33
-14
lines changed

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

+33-14
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,16 @@ public final class PermissionUtils {
3939

4040
private static PermissionUtils sInstance;
4141

42-
private String[] mPermissionsParam;
42+
private String[] mPermissionsParam;
4343
private OnRationaleListener mOnRationaleListener;
44-
private SimpleCallback mSimpleCallback;
45-
private FullCallback mFullCallback;
46-
private ThemeCallback mThemeCallback;
47-
private Set<String> mPermissions;
48-
private List<String> mPermissionsRequest;
49-
private List<String> mPermissionsGranted;
50-
private List<String> mPermissionsDenied;
51-
private List<String> mPermissionsDeniedForever;
44+
private SimpleCallback mSimpleCallback;
45+
private FullCallback mFullCallback;
46+
private ThemeCallback mThemeCallback;
47+
private Set<String> mPermissions;
48+
private List<String> mPermissionsRequest;
49+
private List<String> mPermissionsGranted;
50+
private List<String> mPermissionsDenied;
51+
private List<String> mPermissionsDeniedForever;
5252

5353
private static SimpleCallback sSimpleCallback4WriteSettings;
5454
private static SimpleCallback sSimpleCallback4DrawOverlays;
@@ -363,10 +363,12 @@ private void onRequestPermissionsResult(final Activity activity) {
363363
@RequiresApi(api = Build.VERSION_CODES.M)
364364
static final class PermissionActivityImpl extends UtilsTransActivity.TransActivityDelegate {
365365

366-
private static final String TYPE = "TYPE";
367-
private static final int TYPE_RUNTIME = 0x01;
368-
private static final int TYPE_WRITE_SETTINGS = 0x02;
369-
private static final int TYPE_DRAW_OVERLAYS = 0x03;
366+
private static final String TYPE = "TYPE";
367+
private static final int TYPE_RUNTIME = 0x01;
368+
private static final int TYPE_WRITE_SETTINGS = 0x02;
369+
private static final int TYPE_DRAW_OVERLAYS = 0x03;
370+
371+
private static int currentRequestCode = -1;
370372

371373
private static PermissionActivityImpl INSTANCE = new PermissionActivityImpl();
372374

@@ -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,24 @@ 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+
//checkRequest(TYPE_DRAW_OVERLAYS);
452+
//checkRequest(TYPE_WRITE_SETTINGS);
453+
if (currentRequestCode != -1) {
454+
checkRequest(currentRequestCode);
455+
currentRequestCode = -1;
456+
}
457+
super.onDestroy(activity);
458+
}
459+
444460
@Override
445461
public void onActivityResult(UtilsTransActivity activity, int requestCode, int resultCode, Intent data) {
462+
activity.finish();
463+
}
464+
465+
private void checkRequest(int requestCode) {
446466
if (requestCode == TYPE_WRITE_SETTINGS) {
447467
if (sSimpleCallback4WriteSettings == null) return;
448468
if (isGrantedWriteSettings()) {
@@ -465,7 +485,6 @@ public void run() {
465485
}
466486
}, 100);
467487
}
468-
activity.finish();
469488
}
470489
}
471490

0 commit comments

Comments
 (0)