Handle SecurityException in case of multi-upload

This commit is contained in:
Ritika Pahwa 2025-08-16 18:54:42 +05:30
parent 970d38ecc2
commit 556952e3b1

View file

@ -12,6 +12,7 @@ import androidx.preference.PreferenceManager
import fr.free.nrw.commons.customselector.model.Image import fr.free.nrw.commons.customselector.model.Image
import fr.free.nrw.commons.customselector.ui.selector.CustomSelectorActivity import fr.free.nrw.commons.customselector.ui.selector.CustomSelectorActivity
import fr.free.nrw.commons.filepicker.PickedFiles.singleFileList import fr.free.nrw.commons.filepicker.PickedFiles.singleFileList
import timber.log.Timber
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
import java.net.URISyntaxException import java.net.URISyntaxException
@ -296,12 +297,24 @@ object FilePicker : Constants {
* https://github.com/commons-app/apps-android-commons/issues/6357 * https://github.com/commons-app/apps-android-commons/issues/6357
*/ */
private fun takePersistableUriPermissions(context: Context, result: ActivityResult) { private fun takePersistableUriPermissions(context: Context, result: ActivityResult) {
result.data?.data?.also { uri -> val intent = result.data
val takeFlags: Int = (Intent.FLAG_GRANT_READ_URI_PERMISSION val takeFlags: Int = (Intent.FLAG_GRANT_READ_URI_PERMISSION
or Intent.FLAG_GRANT_WRITE_URI_PERMISSION) or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
intent?.let {
val urisToPersist = mutableListOf<Uri>()
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) context.contentResolver.takePersistableUriPermission(uri, takeFlags)
} }
} }
}
/** /**
* onPictureReturnedFromCustomSelector. * onPictureReturnedFromCustomSelector.