From 86dce4e48dc4719d4ecfc0b510072accc199d6f3 Mon Sep 17 00:00:00 2001 From: darthpaul Date: Thu, 14 Apr 2022 22:59:57 +0100 Subject: [PATCH] request ACCESS_MEDIA_LOCATION permission - the app has declared the MANAGE_MEDIA permission in the AndroidManifest - also requesting the ACCESS_MEDIA_LOCATION permission will make the system not to show the user the prompts from MediaStore.createWriteRequest and MediaStore.createDeleteRequest --- .../gallery/pro/activities/MainActivity.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt index 04eb4db1c..8ca0bfd79 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt @@ -145,7 +145,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { } // just request the permission, tryLoadGallery will then trigger in onResume - handlePermission(PERMISSION_WRITE_STORAGE) { + handleMediaPermissions { if (!it) { toast(R.string.no_storage_permissions) finish() @@ -153,6 +153,15 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { } } + private fun handleMediaPermissions(callback: (granted: Boolean) -> Unit) { + handlePermission(PERMISSION_WRITE_STORAGE) { granted -> + callback(granted) + if (granted && isSPlus()) { + handlePermission(PERMISSION_MEDIA_LOCATION) {} + } + } + } + override fun onStart() { super.onStart() mTempShowHiddenHandler.removeCallbacksAndMessages(null) @@ -435,9 +444,9 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { private fun tryLoadGallery() { // avoid calling anything right after granting the permission, it will be called from onResume() val wasMissingPermission = config.appRunCount == 1 && !hasPermission(PERMISSION_WRITE_STORAGE) - handlePermission(PERMISSION_WRITE_STORAGE) { + handleMediaPermissions { if (wasMissingPermission) { - return@handlePermission + return@handleMediaPermissions } if (it) {