From 556952e3b12306f218df97d3f9ecd9e9a2faa66e Mon Sep 17 00:00:00 2001 From: Ritika Pahwa Date: Sat, 16 Aug 2025 18:54:42 +0530 Subject: [PATCH] Handle SecurityException in case of multi-upload --- .../free/nrw/commons/filepicker/FilePicker.kt | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.kt b/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.kt index bb0a371e1..02fec91f2 100644 --- a/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.kt +++ b/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.kt @@ -12,6 +12,7 @@ import androidx.preference.PreferenceManager import fr.free.nrw.commons.customselector.model.Image import fr.free.nrw.commons.customselector.ui.selector.CustomSelectorActivity import fr.free.nrw.commons.filepicker.PickedFiles.singleFileList +import timber.log.Timber import java.io.File import java.io.IOException import java.net.URISyntaxException @@ -296,10 +297,22 @@ object FilePicker : Constants { * https://github.com/commons-app/apps-android-commons/issues/6357 */ private fun takePersistableUriPermissions(context: Context, result: ActivityResult) { - result.data?.data?.also { uri -> - val takeFlags: Int = (Intent.FLAG_GRANT_READ_URI_PERMISSION - or Intent.FLAG_GRANT_WRITE_URI_PERMISSION) - context.contentResolver.takePersistableUriPermission(uri, takeFlags) + val intent = result.data + val takeFlags: Int = (Intent.FLAG_GRANT_READ_URI_PERMISSION + or Intent.FLAG_GRANT_WRITE_URI_PERMISSION) + intent?.let { + val urisToPersist = mutableListOf() + it.clipData?.let { clipData -> + for (i in 0 until clipData.itemCount) { + urisToPersist.add(clipData.getItemAt(i).uri) + } + } ?: it.data?.let { uri -> + urisToPersist.add(uri) + } + + urisToPersist.forEach { uri -> + context.contentResolver.takePersistableUriPermission(uri, takeFlags) + } } }