Skip to content

Commit

Permalink
Merge pull request dolphin-emu#9061 from Ebola16/Fixes3
Browse files Browse the repository at this point in the history
Android: Improve WRITE_EXTERNAL_STORAGE denial
  • Loading branch information
leoetlino authored Oct 20, 2020
2 parents fc3b474 + d643723 commit 409230e
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,8 @@ protected void onActivityResult(int requestCode, int resultCode, Intent result)
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)
Expand All @@ -223,13 +225,9 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
}
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);
}
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,8 @@ protected void onActivityResult(int requestCode, int resultCode, Intent result)
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)
Expand All @@ -234,14 +236,9 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
}
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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,11 @@ private static boolean showErrorMessage(Context context, DirectoryInitialization
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:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,12 @@

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
Expand All @@ -31,14 +26,9 @@ public static boolean checkWritePermission(final FragmentActivity activity)

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;
Expand All @@ -57,16 +47,4 @@ public static boolean hasWriteAccess(Context context)

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();
}
}

0 comments on commit 409230e

Please sign in to comment.