diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java index a36a5dfe34..28a6303ac7 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java @@ -213,6 +213,8 @@ public final class MainActivity extends AppCompatActivity implements MainView public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + if (requestCode == PermissionsHandler.REQUEST_CODE_WRITE_PERMISSION) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) @@ -223,13 +225,9 @@ public final class MainActivity extends AppCompatActivity implements MainView } else { - Toast.makeText(this, R.string.write_permission_needed, Toast.LENGTH_SHORT).show(); + Toast.makeText(this, R.string.write_permission_needed, Toast.LENGTH_LONG).show(); } } - else - { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - } } /** diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java index 4f3146ef05..930ea5a062 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java @@ -225,6 +225,8 @@ public final class TvMainActivity extends FragmentActivity implements MainView public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + if (requestCode == PermissionsHandler.REQUEST_CODE_WRITE_PERMISSION) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) @@ -234,14 +236,9 @@ public final class TvMainActivity extends FragmentActivity implements MainView } else { - Toast.makeText(this, R.string.write_permission_needed, Toast.LENGTH_SHORT) - .show(); + Toast.makeText(this, R.string.write_permission_needed, Toast.LENGTH_LONG).show(); } } - else - { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - } } private void buildRowsAdapter() diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/AfterDirectoryInitializationRunner.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/AfterDirectoryInitializationRunner.java index 4f8a5fc49c..2e7cae0a48 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/AfterDirectoryInitializationRunner.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/AfterDirectoryInitializationRunner.java @@ -114,11 +114,11 @@ public class AfterDirectoryInitializationRunner switch (state) { case EXTERNAL_STORAGE_PERMISSION_NEEDED: - Toast.makeText(context, R.string.write_permission_needed, Toast.LENGTH_SHORT).show(); + Toast.makeText(context, R.string.write_permission_needed, Toast.LENGTH_LONG).show(); return true; case CANT_FIND_EXTERNAL_STORAGE: - Toast.makeText(context, R.string.external_storage_not_mounted, Toast.LENGTH_SHORT).show(); + Toast.makeText(context, R.string.external_storage_not_mounted, Toast.LENGTH_LONG).show(); return true; default: diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/PermissionsHandler.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/PermissionsHandler.java index d09469cb39..d8a80d59da 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/PermissionsHandler.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/PermissionsHandler.java @@ -2,17 +2,12 @@ package org.dolphinemu.dolphinemu.utils; import android.annotation.TargetApi; import android.content.Context; -import android.content.DialogInterface; import android.content.pm.PackageManager; import android.os.Build; -import android.widget.Toast; -import androidx.appcompat.app.AlertDialog; import androidx.core.content.ContextCompat; import androidx.fragment.app.FragmentActivity; -import org.dolphinemu.dolphinemu.R; - import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE; public class PermissionsHandler @@ -31,14 +26,9 @@ public class PermissionsHandler if (hasWritePermission != PackageManager.PERMISSION_GRANTED) { - if (activity.shouldShowRequestPermissionRationale(WRITE_EXTERNAL_STORAGE)) - { - showMessageOKCancel(activity, activity.getString(R.string.write_permission_needed), - (dialog, which) -> activity.requestPermissions(new String[]{WRITE_EXTERNAL_STORAGE}, - REQUEST_CODE_WRITE_PERMISSION)); - return false; - } - + // We only care about displaying the "Don't ask again" check and can ignore the result. + // Previous toasts already explained the rationale. + activity.shouldShowRequestPermissionRationale(WRITE_EXTERNAL_STORAGE); activity.requestPermissions(new String[]{WRITE_EXTERNAL_STORAGE}, REQUEST_CODE_WRITE_PERMISSION); return false; @@ -57,16 +47,4 @@ public class PermissionsHandler return true; } - - private static void showMessageOKCancel(final FragmentActivity activity, String message, - DialogInterface.OnClickListener okListener) - { - new AlertDialog.Builder(activity, R.style.DolphinDialogBase) - .setMessage(message) - .setPositiveButton(android.R.string.ok, okListener) - .setNegativeButton(android.R.string.cancel, (dialogInterface, i) -> - Toast.makeText(activity, R.string.write_permission_needed, Toast.LENGTH_SHORT) - .show()) - .show(); - } }