From d217b5274411318ffe395e6cd84232a80455f7d0 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Tue, 12 Apr 2022 12:12:05 +0200 Subject: [PATCH] Upgrade to 3.4.0_beta02 Fix #1282 with workaround --- app/build.gradle | 4 ++-- .../java/com/kunzisoft/keepass/utils/UriUtil.kt | 13 ++++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index fb9064cdc..2963a60ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,8 +12,8 @@ android { applicationId "com.kunzisoft.keepass" minSdkVersion 15 targetSdkVersion 31 - versionCode = 106 - versionName = "3.4.0_beta01" + versionCode = 107 + versionName = "3.4.0_beta02" multiDexEnabled true testApplicationId = "com.kunzisoft.keepass.tests" diff --git a/app/src/main/java/com/kunzisoft/keepass/utils/UriUtil.kt b/app/src/main/java/com/kunzisoft/keepass/utils/UriUtil.kt index 5cd542d4f..8ec6ce5f5 100644 --- a/app/src/main/java/com/kunzisoft/keepass/utils/UriUtil.kt +++ b/app/src/main/java/com/kunzisoft/keepass/utils/UriUtil.kt @@ -69,7 +69,18 @@ object UriUtil { return null return when { isFileScheme(fileUri) -> fileUri.path?.let { FileOutputStream(it) } - isContentScheme(fileUri) -> contentResolver.openOutputStream(fileUri, "rwt") + isContentScheme(fileUri) -> { + try { + contentResolver.openOutputStream(fileUri, "wt") + } catch (e: FileNotFoundException) { + Log.e(TAG, "Unable to open stream in `wt` mode, retry in `rwt` mode.", e) + // https://issuetracker.google.com/issues/180526528 + // Try with rwt to fix content provider issue + val outStream = contentResolver.openOutputStream(fileUri, "rwt") + Log.w(TAG, "`rwt` mode used.") + outStream + } + } else -> null } }