android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java | 45 ++++++++++ android/app/src/main/res/values/strings.xml | 7 + 2 files changed, 52 insertions(+)
New commits: commit 743f2e7bdb98fb695ec23a52e53a95a7e3a8a5ad Author: kaishu-sahu <kaishusahu...@gmail.com> AuthorDate: Tue May 28 02:15:33 2019 +0530 Commit: Jan Holesovsky <ke...@collabora.com> CommitDate: Fri Jun 14 20:34:00 2019 +0200 android: add rationale dialog for permission denial with "Don't ask again". If the user denies the permission with "Don't ask again" ticked in the permission dialog then the only way to allow the permission is through android os settings. Change-Id: I8f51ae7390a9565011d6172bcbd08b3666bd60e4 Reviewed-on: https://gerrit.libreoffice.org/73071 Reviewed-by: Jan Holesovsky <ke...@collabora.com> Tested-by: Jan Holesovsky <ke...@collabora.com> diff --git a/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java b/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java index 0d9c65b46..3c462fe52 100644 --- a/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java +++ b/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java @@ -26,9 +26,11 @@ import android.graphics.drawable.Icon; import android.hardware.usb.UsbManager; import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.preference.PreferenceManager; +import android.provider.Settings; import android.text.Editable; import android.text.InputType; import android.text.TextWatcher; @@ -1316,6 +1318,49 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings setEditFABVisibility(View.VISIBLE); } else { setEditFABVisibility(View.INVISIBLE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + boolean showRationale = shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE); + androidx.appcompat.app.AlertDialog.Builder rationaleDialogBuilder = new androidx.appcompat.app.AlertDialog.Builder(this) + .setCancelable(false) + .setTitle(getString(R.string.title_permission_required)) + .setMessage(getString(R.string.reason_required_to_read_documents)); + if (showRationale) { + rationaleDialogBuilder.setPositiveButton(getString(R.string.positive_ok), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + ActivityCompat.requestPermissions(LibreOfficeUIActivity.this, + new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, + PERMISSION_WRITE_EXTERNAL_STORAGE); + } + }) + .setNegativeButton(getString(R.string.negative_im_sure), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + LibreOfficeUIActivity.this.finish(); + } + }) + .create() + .show(); + } else { + rationaleDialogBuilder.setPositiveButton(getString(R.string.positive_ok), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + Uri uri = Uri.fromParts("package", getPackageName(), null); + intent.setData(uri); + startActivity(intent); + } + }) + .setNegativeButton(R.string.negative_cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + LibreOfficeUIActivity.this.finish(); + } + }) + .create() + .show(); + } + } } break; default: diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 41dc85ad6..7e893df46 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -109,6 +109,13 @@ <string name="bad_directory">Invalid directory path</string> <string name="current_dir">Current Directory: %1$s</string> + <!-- Permission rationale alert dialog strings --> + <string name="title_permission_required">Permission Required</string> + <string name="reason_required_to_read_documents">Storage permission is required for reading your documents.</string> + <string name="positive_ok">OKAY</string> + <string name="negative_im_sure">I\'M SURE</string> + <string name="negative_cancel">CANCEL</string> + <!-- Save Alert dialog strings --> <string name="action_cancel">Cancel</string> _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits