diff --git a/CHANGELOG.md b/CHANGELOG.md index f899049000..74108d178c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Fixed +- Fixed invalid MediaStore URI crash when overwriting edited images on scoped-storage devices ([#1031]) ## [1.13.1] - 2026-02-14 ### Changed diff --git a/app/src/main/kotlin/org/fossify/gallery/extensions/Activity.kt b/app/src/main/kotlin/org/fossify/gallery/extensions/Activity.kt index bc9e03be0d..b624e8afa0 100644 --- a/app/src/main/kotlin/org/fossify/gallery/extensions/Activity.kt +++ b/app/src/main/kotlin/org/fossify/gallery/extensions/Activity.kt @@ -1019,11 +1019,18 @@ fun BaseSimpleActivity.ensureWritablePath( } fun requestGrantsThenProceed() { - if (isRPlus() && !isExternalStorageManager()) { - val fileDirItem = arrayListOf(File(targetPath).toFileDirItem(this)) - val fileUris = getFileUrisFromFileDirItems(fileDirItem) - updateSDK30Uris(fileUris) { success -> - if (success) proceedAfterGrants() else onCancel?.invoke() + if (isRPlus() && !isExternalStorageManager() && getDoesFilePathExist(targetPath)) { + val fileDirItems = arrayListOf(File(targetPath).toFileDirItem(this)) + resolveMediaStoreUris(fileDirItems) { resolution -> + val fileUris = resolution.uris + if (fileUris.isEmpty()) { + proceedAfterGrants() + return@resolveMediaStoreUris + } + + updateSDK30Uris(fileUris) { success -> + if (success) proceedAfterGrants() else onCancel?.invoke() + } } } else { proceedAfterGrants() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5c45171dbf..075eebd800 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,7 +17,7 @@ exif = "1.0.1" #Room room = "2.8.4" #Fossify -commons = "6.1.6" +commons = "7.0.0" #Gradle4 gradlePlugins-agp = "9.2.0" #Other