From 2cca6a5afb7138aa1eee1d30aea811529dd0091d Mon Sep 17 00:00:00 2001 From: Fumiaki Yoshimatsu Date: Sat, 12 Dec 2020 14:10:22 -0500 Subject: [PATCH] Check if the content uri already exists and rename the file until it's valid to insert. Fixes #10159 --- .../securesms/util/SaveAttachmentTask.java | 54 ++++++++++++++++--- .../securesms/util/StorageUtil.java | 2 +- 2 files changed, 48 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/SaveAttachmentTask.java b/app/src/main/java/org/thoughtcrime/securesms/util/SaveAttachmentTask.java index 5524ad700..8926a510b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/SaveAttachmentTask.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/SaveAttachmentTask.java @@ -4,9 +4,11 @@ import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.content.DialogInterface.OnClickListener; +import android.database.Cursor; import android.media.MediaScannerConnection; import android.net.Uri; import android.os.Build; +import android.os.Environment; import android.provider.MediaStore; import android.text.TextUtils; import android.webkit.MimeTypeMap; @@ -97,7 +99,7 @@ public class SaveAttachmentTask extends ProgressDialogAsyncTask 28) { contentValues.put(MediaStore.MediaColumns.IS_PENDING, 1); - } - - if (Build.VERSION.SDK_INT <= 28 && Objects.equals(outputUri.getScheme(), ContentResolver.SCHEME_FILE)) { - File outputDirectory = new File(outputUri.getPath()); - File outputFile = new File(outputDirectory, base + "." + extension); + } else if (Objects.equals(outputUri.getScheme(), ContentResolver.SCHEME_FILE)) { + File outputDirectory = new File(outputUri.getPath()); + File outputFile = new File(outputDirectory, base + "." + extension); int i = 0; while (outputFile.exists()) { @@ -183,11 +199,35 @@ public class SaveAttachmentTask extends ProgressDialogAsyncTask