Fixed mic permission requested 3 times and dialog not showing.

This commit is contained in:
Miku AuahDark
2019-09-29 15:24:35 +08:00
parent 05e193ddbd
commit 59a5fcb875
2 changed files with 27 additions and 25 deletions
@@ -13,7 +13,7 @@ import android.util.Log;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
public class DownloadActivity extends Activity { public class DownloadActivity extends Activity {
public static final int EXTERNAL_STORAGE_REQUEST_CODE = 2; public static final int EXTERNAL_STORAGE_REQUEST_CODE = 3;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@@ -400,13 +400,33 @@ public class GameActivity extends SDLActivity {
@Keep @Keep
public void showRecordingAudioPermissionMissingDialog() { public void showRecordingAudioPermissionMissingDialog() {
Log.d("GameActivity", "showRecordingAudioPermissionMissingDialog()");
runOnUiThread(new Runnable() {
@Override
public void run() {
AlertDialog dialog = new AlertDialog.Builder(mSingleton) AlertDialog dialog = new AlertDialog.Builder(mSingleton)
.setTitle("Audio Recording Permission Missing") .setTitle("Audio Recording Permission Missing")
.setMessage("It appears that this game request for mic permission. The game may not work correctly without mic permission!") .setMessage("It appears that this game uses mic capabilities. The game may not work correctly without mic permission!")
.setNeutralButton("Continue", null) .setNeutralButton("Continue", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface di, int id) {
synchronized (recordAudioRequestDummy) {
recordAudioRequestDummy.notify();
}
}
})
.create(); .create();
dialog.show(); dialog.show();
} }
});
synchronized (recordAudioRequestDummy) {
try {
recordAudioRequestDummy.wait();
} catch (InterruptedException e) {
Log.d("GameActivity", "mic permission dialog", e);
}
}
}
public void showExternalStoragePermissionMissingDialog() { public void showExternalStoragePermissionMissingDialog() {
AlertDialog dialog = new AlertDialog.Builder(mSingleton) AlertDialog dialog = new AlertDialog.Builder(mSingleton)
@@ -485,24 +505,6 @@ public class GameActivity extends SDLActivity {
@Keep @Keep
public boolean hasRecordAudioPermission() { 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; return ActivityCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED;
} }