Browse Source

Fixed mic permission requested 3 times and dialog not showing.

Miku AuahDark 6 years ago
parent
commit
59a5fcb875

+ 1 - 1
love/src/main/java/org/love2d/android/DownloadActivity.java

@@ -13,7 +13,7 @@ import android.util.Log;
 import androidx.core.app.ActivityCompat;
 
 public class DownloadActivity extends Activity {
-    public static final int EXTERNAL_STORAGE_REQUEST_CODE = 2;
+    public static final int EXTERNAL_STORAGE_REQUEST_CODE = 3;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {

+ 26 - 24
love/src/main/java/org/love2d/android/GameActivity.java

@@ -400,12 +400,32 @@ public class GameActivity extends SDLActivity {
 
     @Keep
     public void showRecordingAudioPermissionMissingDialog() {
-        AlertDialog dialog = new AlertDialog.Builder(mSingleton)
-            .setTitle("Audio Recording Permission Missing")
-            .setMessage("It appears that this game request for mic permission. The game may not work correctly without mic permission!")
-            .setNeutralButton("Continue", null)
-            .create();
-        dialog.show();
+        Log.d("GameActivity", "showRecordingAudioPermissionMissingDialog()");
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                AlertDialog dialog = new AlertDialog.Builder(mSingleton)
+                    .setTitle("Audio Recording Permission Missing")
+                    .setMessage("It appears that this game uses mic capabilities. The game may not work correctly without mic permission!")
+                    .setNeutralButton("Continue", new DialogInterface.OnClickListener() {
+                        public void onClick(DialogInterface di, int id) {
+                            synchronized (recordAudioRequestDummy) {
+                                recordAudioRequestDummy.notify();
+                            }
+                        }
+                    })
+                    .create();
+                dialog.show();
+            }
+        });
+
+        synchronized (recordAudioRequestDummy) {
+            try {
+                recordAudioRequestDummy.wait();
+            } catch (InterruptedException e) {
+                Log.d("GameActivity", "mic permission dialog", e);
+            }
+        }
     }
 
     public void showExternalStoragePermissionMissingDialog() {
@@ -485,24 +505,6 @@ public class GameActivity extends SDLActivity {
 
     @Keep
     public boolean hasRecordAudioPermission() {
-        if (ActivityCompat.checkSelfPermission(this,
-                Manifest.permission.RECORD_AUDIO)
-                == PackageManager.PERMISSION_GRANTED) {
-            return true;
-        }
-
-        Log.d("GameActivity", "Requesting mic permission and locking LÖVE thread until we have an answer.");
-        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, RECORD_AUDIO_REQUEST_CODE);
-
-        synchronized (recordAudioRequestDummy) {
-            try {
-                recordAudioRequestDummy.wait();
-            } catch (InterruptedException e) {
-                Log.d("GameActivity", "requesting mic permission", e);
-                return false;
-            }
-        }
-
         return ActivityCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED;
     }