From d643723d3add5b319051afd44bf78ea4c2cee137 Mon Sep 17 00:00:00 2001 From: Ryan Meredith Date: Sun, 13 Sep 2020 10:08:04 -0400 Subject: [PATCH] Android: Improve WRITE_EXTERNAL_STORAGE denial --- .../dolphinemu/ui/main/MainActivity.java | 8 ++---- .../dolphinemu/ui/main/TvMainActivity.java | 9 ++---- .../AfterDirectoryInitializationRunner.java | 4 +-- .../dolphinemu/utils/PermissionsHandler.java | 28 ++----------------- 4 files changed, 11 insertions(+), 38 deletions(-) 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 d96efd27df..e2b12ed784 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 @@ -207,6 +207,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) @@ -217,13 +219,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 cf75b07c40..f3d1ca36f7 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 @@ -217,6 +217,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) @@ -226,14 +228,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(); - } }