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

Reply via email to