@@ -39,16 +39,16 @@ public final class PermissionUtils {
39
39
40
40
private static PermissionUtils sInstance ;
41
41
42
- private String [] mPermissionsParam ;
42
+ private String [] mPermissionsParam ;
43
43
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 ;
52
52
53
53
private static SimpleCallback sSimpleCallback4WriteSettings ;
54
54
private static SimpleCallback sSimpleCallback4DrawOverlays ;
@@ -363,10 +363,12 @@ private void onRequestPermissionsResult(final Activity activity) {
363
363
@ RequiresApi (api = Build .VERSION_CODES .M )
364
364
static final class PermissionActivityImpl extends UtilsTransActivity .TransActivityDelegate {
365
365
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 ;
370
372
371
373
private static PermissionActivityImpl INSTANCE = new PermissionActivityImpl ();
372
374
@@ -403,8 +405,10 @@ public void run() {
403
405
}
404
406
requestPermissions (activity );
405
407
} else if (type == TYPE_WRITE_SETTINGS ) {
408
+ currentRequestCode = TYPE_WRITE_SETTINGS ;
406
409
startWriteSettingsActivity (activity , TYPE_WRITE_SETTINGS );
407
410
} else if (type == TYPE_DRAW_OVERLAYS ) {
411
+ currentRequestCode = TYPE_DRAW_OVERLAYS ;
408
412
startOverlayPermissionActivity (activity , TYPE_DRAW_OVERLAYS );
409
413
} else {
410
414
activity .finish ();
@@ -441,8 +445,24 @@ public boolean dispatchTouchEvent(UtilsTransActivity activity, MotionEvent ev) {
441
445
return true ;
442
446
}
443
447
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
+
444
460
@ Override
445
461
public void onActivityResult (UtilsTransActivity activity , int requestCode , int resultCode , Intent data ) {
462
+ activity .finish ();
463
+ }
464
+
465
+ private void checkRequest (int requestCode ) {
446
466
if (requestCode == TYPE_WRITE_SETTINGS ) {
447
467
if (sSimpleCallback4WriteSettings == null ) return ;
448
468
if (isGrantedWriteSettings ()) {
@@ -465,7 +485,6 @@ public void run() {
465
485
}
466
486
}, 100 );
467
487
}
468
- activity .finish ();
469
488
}
470
489
}
471
490
0 commit comments