From 4719de5ebb576d03719e194657c1f4590bf6b5ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=BCleyman=20Yasir=20KULA?= Date: Fri, 19 Jul 2019 22:27:02 +0300 Subject: [PATCH] Bugfix for freeze when requesting permissions on Android (Unity 2019) --- JAR Source/RuntimePermissionsFragment.java | 23 ++++++++++++++++-- .../Android/RuntimePermissions.jar | Bin 4901 -> 5303 bytes Plugins/AndroidRuntimePermissions/README.txt | 23 ++++++++++++++++++ .../AndroidRuntimePermissions/README.txt.meta | 8 ++++++ RuntimePermissions.unitypackage | Bin 8436 -> 9739 bytes 5 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 Plugins/AndroidRuntimePermissions/README.txt create mode 100644 Plugins/AndroidRuntimePermissions/README.txt.meta diff --git a/JAR Source/RuntimePermissionsFragment.java b/JAR Source/RuntimePermissionsFragment.java index afa5b96..7d4adb5 100644 --- a/JAR Source/RuntimePermissionsFragment.java +++ b/JAR Source/RuntimePermissionsFragment.java @@ -2,12 +2,14 @@ import android.annotation.TargetApi; import android.app.Fragment; +import android.content.Intent; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.util.Log; import java.util.ArrayList; +import java.util.Random; /** * Created by yasirkula on 27.04.2018. @@ -42,7 +44,8 @@ public void onCreate( Bundle savedInstanceState ) else { m_permissions = getArguments().getStringArray( PERMISSIONS ); - requestPermissions( m_permissions, PERMISSIONS_REQUEST_CODE ); + if( m_permissions != null ) + requestPermissions( m_permissions, PERMISSIONS_REQUEST_CODE ); } } @@ -55,6 +58,8 @@ public void onRequestPermissionsResult( int requestCode, String[] permissions, i if( permissionReceiver == null || m_permissions == null ) { Log.e( "Unity", "Fragment data got reset while asking permissions!" ); + + getFragmentManager().beginTransaction().remove( this ).commit(); return; } @@ -101,5 +106,19 @@ else if( !shouldShowRequestPermissionRationale( permission ) ) permissionReceiver.OnPermissionResult( result ); getFragmentManager().beginTransaction().remove( this ).commit(); + + // Resolves a bug in Unity 2019 where the calling activity + // doesn't resume automatically after the fragment finishes + // Credit: https://stackoverflow.com/a/12409215/2373034 + try + { + Intent resumeUnityActivity = new Intent( getActivity(), getActivity().getClass() ); + resumeUnityActivity.setFlags( Intent.FLAG_ACTIVITY_REORDER_TO_FRONT ); + getActivity().startActivityIfNeeded( resumeUnityActivity, 0 ); + } + catch( Exception e ) + { + Log.e( "Unity", "Exception (resume):", e ); + } } -} +} \ No newline at end of file diff --git a/Plugins/AndroidRuntimePermissions/Android/RuntimePermissions.jar b/Plugins/AndroidRuntimePermissions/Android/RuntimePermissions.jar index 20fbb390a1ee97f90720f9b006752afe4030d750..7f59f289d6cbad176c2d33481e192aa1a5375896 100644 GIT binary patch delta 2563 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 BiL3ws delta 2120 zcmZ{mdpHw}7sp5LMRS>JB}N)%Ze{ot!iWdOj5dr|Tf2&H_vSLEmT$D$c3`%Mz zGem{f(N!QggjE@eQy;-I#PeJ;H_WF`p9-WX$_C$u+Bw`RM{}zanJT5;}L3kVH}#?W1{{ zy=$f4vY&AhFo4qI0)rw>>z~Lig6k>*dp+rdMn5C1@7<8jlYe1<)fm!BFA@&*L|tky zc9VGT9CI-w;_HvR+Oox${WoWQIpu8+BbvRmtraPnN^2D%s$ZI3o8(nE+f<EE06D|;lO7W1&V!vb3Q!ChB^2brqUC0o2P9V6e&CZo{nciFsGEQ|NM&zDwS7P5WO zsg<8s4+Y2FnsX)f1WMoG8qHdqf zLd{y1^CKOZFmtG;0=>Bbbb**w^;Hu8>FoH3i>A4iUW-u^Klle+PNRm-MilyjWmd6Y)#KIJwXDwTN)31+dz8eQ!o8(bL?J_;T& zKKI0}Y;07#{4%MZeTK`Y3zXaNG@EXoLIks|avH0r+?Kvl#x|(B69lTB5y<|?n9y@M zDWLm7CN@(>xBh&7bbWd6xgc^~ijVR+%0c8W;2Fo&Q)=a;G#%tG$VGg;42^bHLJTM;s&kWtr1pQnO%%;YRQmDXWej1iCubzB?^C% z`tdD(!RVy7Y%v?SDF%j)OlnSFFmAK2uOEMzlSV>18ScVk@)03zr(^y~^z6Vv@s36Xy#YM8%va zP*70z`m3sKJ1+P-#oh(^ZO|66)zv9CGxa*ly)&!BS5iLN`yR|bMvn<*qd~dM+e6aD z-|M|T63SVVcSs2q?ExEJ`HUlsaGA<_omR-yIN!tE@s$bV@jFum0$5Yd5qvMfqp zRwweN`W&x$?$G&AF`)l-b?s=sliM5H(?i)z8sS(TkIZ;X{1x7h=|_A~!hAMyq%MwU zvqVw(ScmO~ty*_om%bvOh=VObjml7R3tCh_b4I9mH`!vs3`r&d<71{*#)ns7+K~gB zvRt2*54*Fbi5?ZA@HhTijYadje$r06`~ILf+fYo5<3Dt*5)sPo5qSua*#CbKy@&08 z47Zo}fDLs(aB%+j!2eMDPdfmB!|?xMxWK|GxC4Tl=eM+P&yR5I Ky$Qma}Br4g@mte{uQV?G{i9v$tL}R6Y4tP8n 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 Zr%ka6Pyq^1fC7Fg_z(KQNz(wf004R&BCh}d literal 8436 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