From 0cfd44990c3961fc5f8c35eed40007325f09d8af Mon Sep 17 00:00:00 2001 From: cyBerta Date: Mon, 17 Jun 2019 19:42:41 +0200 Subject: [PATCH] fix voice message handling for messages sent from Android 4.X devices #916 --- .../securesms/ConversationActivity.java | 2 +- .../providers/PersistentBlobProvider.java | 3 ++- .../thoughtcrime/securesms/util/MediaUtil.java | 18 ++++++++++++++++-- .../securesms/util/SaveAttachmentTask.java | 3 +-- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/org/thoughtcrime/securesms/ConversationActivity.java b/src/org/thoughtcrime/securesms/ConversationActivity.java index d5da5b881..75b10abc2 100644 --- a/src/org/thoughtcrime/securesms/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/ConversationActivity.java @@ -918,7 +918,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity String ext = ""; if(filename==null) { filename = new SimpleDateFormat("yyyy-MM-dd-HH-mm").format(new Date()); - ext = "."+MimeTypeMap.getSingleton().getExtensionFromMimeType(attachment.getContentType()); + ext = "." + MediaUtil.getExtensionFromMimeType(attachment.getContentType()); } else { int i = filename.lastIndexOf("."); diff --git a/src/org/thoughtcrime/securesms/providers/PersistentBlobProvider.java b/src/org/thoughtcrime/securesms/providers/PersistentBlobProvider.java index 2f593d540..ea40653c0 100644 --- a/src/org/thoughtcrime/securesms/providers/PersistentBlobProvider.java +++ b/src/org/thoughtcrime/securesms/providers/PersistentBlobProvider.java @@ -11,6 +11,7 @@ import android.util.Log; import android.webkit.MimeTypeMap; import org.thoughtcrime.securesms.util.FileProviderUtil; +import org.thoughtcrime.securesms.util.MediaUtil; import org.thoughtcrime.securesms.util.Util; import java.io.ByteArrayInputStream; @@ -189,7 +190,7 @@ public class PersistentBlobProvider { } private static @NonNull String getExtensionFromMimeType(String mimeType) { - final String extension = MimeTypeMap.getSingleton().getExtensionFromMimeType(mimeType); + final String extension = MediaUtil.getExtensionFromMimeType(mimeType); return extension != null ? extension : BLOB_EXTENSION; } diff --git a/src/org/thoughtcrime/securesms/util/MediaUtil.java b/src/org/thoughtcrime/securesms/util/MediaUtil.java index 8e5ae3bb2..887dbe413 100644 --- a/src/org/thoughtcrime/securesms/util/MediaUtil.java +++ b/src/org/thoughtcrime/securesms/util/MediaUtil.java @@ -1,11 +1,9 @@ package org.thoughtcrime.securesms.util; -import android.content.ContentResolver; import android.content.Context; import android.graphics.Bitmap; import android.media.MediaMetadataRetriever; import android.net.Uri; -import android.provider.MediaStore; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.WorkerThread; @@ -281,4 +279,20 @@ public class MediaUtil { } return success; } + + public static String getExtensionFromMimeType(String contentType) { + String extension = MimeTypeMap.getSingleton().getExtensionFromMimeType(contentType); + if (extension != null) { + return extension; + } + + //custom handling needed for unsupported extensions on Android 4.X + switch (contentType) { + case AUDIO_AAC: + return "aac"; + // TODO: add webp and other unsupported extensions here + } + return null; + } + } diff --git a/src/org/thoughtcrime/securesms/util/SaveAttachmentTask.java b/src/org/thoughtcrime/securesms/util/SaveAttachmentTask.java index 335a03df3..a5b135cfe 100644 --- a/src/org/thoughtcrime/securesms/util/SaveAttachmentTask.java +++ b/src/org/thoughtcrime/securesms/util/SaveAttachmentTask.java @@ -126,8 +126,7 @@ public class SaveAttachmentTask extends ProgressDialogAsyncTask