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 59ee73029c..48e6851255 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/SaveAttachmentTask.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/SaveAttachmentTask.java @@ -1,5 +1,6 @@ package org.thoughtcrime.securesms.util; +import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.content.DialogInterface.OnClickListener; @@ -28,6 +29,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.lang.ref.WeakReference; import java.text.SimpleDateFormat; +import java.util.Objects; public class SaveAttachmentTask extends ProgressDialogAsyncTask> { private static final String TAG = SaveAttachmentTask.class.getSimpleName(); @@ -87,7 +89,7 @@ public class SaveAttachmentTask extends ProgressDialogAsyncTask 28) { - return MediaStore.Downloads.EXTERNAL_CONTENT_URI; + if (Build.VERSION.SDK_INT < 21) { + return getLegacyUri(Environment.DIRECTORY_MOVIES); } else { - return getLegacyDownloadUri(); + return MediaStore.Video.Media.EXTERNAL_CONTENT_URI; } } - public static @NonNull Uri getLegacyDownloadUri() { - return Uri.fromFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)); + public static @NonNull Uri getAudioUri() { + if (Build.VERSION.SDK_INT < 21) { + return getLegacyUri(Environment.DIRECTORY_MUSIC); + } else { + return MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; + } + } + + public static @NonNull Uri getImageUri() { + if (Build.VERSION.SDK_INT < 21) { + return getLegacyUri(Environment.DIRECTORY_PICTURES); + } else { + return MediaStore.Images.Media.EXTERNAL_CONTENT_URI; + } + } + + public static @NonNull Uri getDownloadUri() { + if (Build.VERSION.SDK_INT < 29) { + return getLegacyUri(Environment.DIRECTORY_DOWNLOADS); + } else { + return MediaStore.Downloads.EXTERNAL_CONTENT_URI; + } + } + + public static @NonNull Uri getLegacyUri(@NonNull String directory) { + return Uri.fromFile(Environment.getExternalStoragePublicDirectory(directory)); } public static @Nullable String getCleanFileName(@Nullable String fileName) {