diff --git a/res/values/strings.xml b/res/values/strings.xml index fb524f949..e04708f02 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -177,6 +177,9 @@ Signal needs Camera permissions to take photos or video %1$s %2$s + Signal cannot send SMS/MMS messages because it is not your default SMS app. Would you like to change this in your Android settings? + Yes + No diff --git a/src/org/thoughtcrime/securesms/ConversationActivity.java b/src/org/thoughtcrime/securesms/ConversationActivity.java index 61465a600..5dc4f5341 100644 --- a/src/org/thoughtcrime/securesms/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/ConversationActivity.java @@ -22,6 +22,7 @@ import android.annotation.TargetApi; import android.content.ActivityNotFoundException; import android.content.BroadcastReceiver; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.res.Configuration; @@ -1855,6 +1856,13 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity } private ListenableFuture sendMediaMessage(final boolean forceSms, String body, SlideDeck slideDeck, List contacts, final long expiresIn, final int subscriptionId, final boolean initiating) { + if (!isDefaultSms && (!isSecureText || forceSms)) { + showDefaultSmsPrompt(); + SettableFuture future = new SettableFuture<>(); + future.set(null); + return future; + } + OutgoingMediaMessage outgoingMessageCandidate = new OutgoingMediaMessage(recipient, slideDeck, body, System.currentTimeMillis(), subscriptionId, expiresIn, distributionType, inputPanel.getQuote().orNull(), contacts); final SettableFuture future = new SettableFuture<>(); @@ -1905,6 +1913,11 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity private void sendTextMessage(final boolean forceSms, final long expiresIn, final int subscriptionId, final boolean initiatingConversation) throws InvalidMessageException { + if (!isDefaultSms && (!isSecureText || forceSms)) { + showDefaultSmsPrompt(); + return; + } + final Context context = getApplicationContext(); final String messageBody = getMessage(); @@ -1945,6 +1958,14 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity .execute(); } + private void showDefaultSmsPrompt() { + new AlertDialog.Builder(this) + .setMessage(R.string.ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app) + .setNegativeButton(R.string.ConversationActivity_no, (dialog, which) -> dialog.dismiss()) + .setPositiveButton(R.string.ConversationActivity_yes, (dialog, which) -> handleMakeDefaultSms()) + .show(); + } + private void updateToggleButtonState() { if (composeText.getText().length() == 0 && !attachmentManager.isAttachmentPresent()) { buttonToggle.display(attachButton);