diff --git a/res/values/strings.xml b/res/values/strings.xml index 00f010087a..1eb89a5b61 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -67,6 +67,7 @@ Fallback to unencrypted SMS? Fallback to unencrypted MMS? This message will not be encrypted because a secure session could not be established.\n\nSend insecure message? + Can\'t find an app able to open this media. Initiate secure session? diff --git a/src/org/thoughtcrime/securesms/ConversationItem.java b/src/org/thoughtcrime/securesms/ConversationItem.java index 54fe0aaadd..ca19a8523c 100644 --- a/src/org/thoughtcrime/securesms/ConversationItem.java +++ b/src/org/thoughtcrime/securesms/ConversationItem.java @@ -17,6 +17,7 @@ package org.thoughtcrime.securesms; import android.app.AlertDialog; +import android.content.ActivityNotFoundException; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -36,6 +37,7 @@ import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import android.widget.Toast; import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.MmsDatabase; @@ -446,7 +448,12 @@ public class ConversationItem extends LinearLayout { Intent intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.setDataAndType(slide.getUri(), slide.getContentType()); - context.startActivity(intent); + try { + context.startActivity(intent); + } catch (ActivityNotFoundException anfe) { + Log.w(TAG, "No activity existed to view the media."); + Toast.makeText(context, R.string.ConversationItem_unable_to_open_media, Toast.LENGTH_LONG).show(); + } } public void onClick(View v) { diff --git a/src/org/thoughtcrime/securesms/mms/AudioSlide.java b/src/org/thoughtcrime/securesms/mms/AudioSlide.java index 0284d934f7..9d9fae175e 100644 --- a/src/org/thoughtcrime/securesms/mms/AudioSlide.java +++ b/src/org/thoughtcrime/securesms/mms/AudioSlide.java @@ -38,6 +38,11 @@ public class AudioSlide extends Slide { super(context, part); } + @Override + public String getContentType() { + return "audio/*"; + } + public AudioSlide(Context context, Uri uri) throws IOException, MediaTooLargeException { super(context, constructPartFromUri(context, uri)); } diff --git a/src/org/thoughtcrime/securesms/mms/ImageSlide.java b/src/org/thoughtcrime/securesms/mms/ImageSlide.java index c58d2018db..ff256ee708 100644 --- a/src/org/thoughtcrime/securesms/mms/ImageSlide.java +++ b/src/org/thoughtcrime/securesms/mms/ImageSlide.java @@ -60,6 +60,11 @@ public class ImageSlide extends Slide { super(context, masterSecret, part); } + @Override + public String getContentType() { + return "image/*"; + } + public ImageSlide(Context context, Uri uri) throws IOException, BitmapDecodingException { super(context, constructPartFromUri(context, uri)); } diff --git a/src/org/thoughtcrime/securesms/mms/VideoSlide.java b/src/org/thoughtcrime/securesms/mms/VideoSlide.java index 290735220a..0a25d5f42c 100644 --- a/src/org/thoughtcrime/securesms/mms/VideoSlide.java +++ b/src/org/thoughtcrime/securesms/mms/VideoSlide.java @@ -39,6 +39,11 @@ public class VideoSlide extends Slide { super(context, part); } + @Override + public String getContentType() { + return "video/*"; + } + public VideoSlide(Context context, Uri uri) throws IOException, MediaTooLargeException { super(context, constructPartFromUri(context, uri)); }