diff app/src/main/java/com/bartsent/simpleresizer/EditImage.kt @ 37:0dbd924cb5e8

Explain why permission needed, per guidelines.
author David Barts <n5jrn@me.com>
date Tue, 23 Mar 2021 22:30:34 -0700
parents 70f1d11d53ad
children cfb19d4ccf78
line wrap: on
line diff
--- a/app/src/main/java/com/bartsent/simpleresizer/EditImage.kt	Fri Mar 19 12:49:13 2021 -0700
+++ b/app/src/main/java/com/bartsent/simpleresizer/EditImage.kt	Tue Mar 23 22:30:34 2021 -0700
@@ -325,12 +325,26 @@
         }
     }
 
+    fun requestWritePermission(): Unit {
+        requestPermissions(arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), REQUEST_WRITE_EXTERNAL)
+    }
+
     fun doneClicked(view: View?): Unit {
-        // If we need a permission, request it and bail. We will be called again
+        // If we need WRITE_EXTERNAL_STORAGE, request it and bail. We will be called again
         // (with the permission) if it is granted.
         if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.Q) {
             if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) {
-                requestPermissions(arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), REQUEST_WRITE_EXTERNAL)
+                if (shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE))
+                    AlertDialog.Builder(this).also {
+                        it.setMessage(getString(R.string.permission_needed, getString(R.string.app_name)))
+                        it.setNeutralButton(R.string.ok_text) { dialog, _ ->
+                            dialog.dismiss()
+                            requestWritePermission()
+                        }
+                        it.create()
+                    }.show()
+                else
+                    requestWritePermission()
                 return
             }
         }