diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java index a1fa3995f..ac05c799b 100644 --- a/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java @@ -24,7 +24,7 @@ import static org.thoughtcrime.securesms.util.RelayUtil.isSharing; import android.Manifest; import android.annotation.SuppressLint; import android.content.ActivityNotFoundException; -import android.content.Context; +import android.content.ClipData; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.res.Configuration; @@ -33,7 +33,6 @@ import android.graphics.Color; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.AsyncTask; -import android.os.Build; import android.os.Bundle; import android.os.Vibrator; import android.provider.Browser; @@ -347,14 +346,27 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity switch (reqCode) { case PICK_GALLERY: - MediaType mediaType; - String mimeType = MediaUtil.getMimeType(this, data.getData()); - - if (MediaUtil.isGif(mimeType)) mediaType = MediaType.GIF; - else if (MediaUtil.isVideo(mimeType)) mediaType = MediaType.VIDEO; - else mediaType = MediaType.IMAGE; - - setMedia(data.getData(), mediaType); + final Uri singleUri = data.getData(); + if (singleUri != null) { + MediaType mediaType; + String mimeType = MediaUtil.getMimeType(this, singleUri); + if (MediaUtil.isGif(mimeType)) mediaType = MediaType.GIF; + else if (MediaUtil.isVideo(mimeType)) mediaType = MediaType.VIDEO; + else mediaType = MediaType.IMAGE; + setMedia(singleUri, mediaType); + } else { + final ClipData multipleUris = data.getClipData(); + if (multipleUris != null) { + final int uriCount = multipleUris.getItemCount(); + if (uriCount > 0) { + ArrayList uriList = new ArrayList<>(uriCount); + for (int i = 0; i < uriCount; i++) { + uriList.add(multipleUris.getItemAt(i).getUri()); + } + askSendingFiles(uriList, () -> SendRelayedMessageUtil.handleSharing(this, chatId, uriList, null)); + } + } + } break; case PICK_DOCUMENT: diff --git a/src/main/java/org/thoughtcrime/securesms/util/SendRelayedMessageUtil.java b/src/main/java/org/thoughtcrime/securesms/util/SendRelayedMessageUtil.java index 76d96c7d4..794c2cb65 100644 --- a/src/main/java/org/thoughtcrime/securesms/util/SendRelayedMessageUtil.java +++ b/src/main/java/org/thoughtcrime/securesms/util/SendRelayedMessageUtil.java @@ -57,7 +57,7 @@ public class SendRelayedMessageUtil { dcContext.forwardMsgs(forwardedMessageIDs, chatId); } - private static void handleSharing(Context context, int chatId, ArrayList sharedUris, String sharedText) { + public static void handleSharing(Context context, int chatId, ArrayList sharedUris, String sharedText) { DcContext dcContext = DcHelper.getContext(context); ArrayList uris = sharedUris; String text = sharedText;