From 2152b4a2cdee0c2867534a21e1dfe62f862dc1a7 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 5 Mar 2020 12:38:05 -0400 Subject: [PATCH] Add warning dialog for insecure calls. --- .../RecipientPreferenceActivity.java | 11 +----- .../conversation/ConversationActivity.java | 11 +----- .../securesms/util/CommunicationActions.java | 39 +++++++++++++++---- app/src/main/res/values/strings.xml | 2 + 4 files changed, 36 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/RecipientPreferenceActivity.java b/app/src/main/java/org/thoughtcrime/securesms/RecipientPreferenceActivity.java index 14b885c0f0..764d8295a2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/RecipientPreferenceActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/RecipientPreferenceActivity.java @@ -794,16 +794,7 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi @Override public void onInSecureCallClicked() { - try { - Intent dialIntent = new Intent(Intent.ACTION_DIAL, - Uri.parse("tel:" + recipient.get().requireE164())); - startActivity(dialIntent); - } catch (ActivityNotFoundException anfe) { - Log.w(TAG, anfe); - Dialogs.showAlertDialog(getContext(), - getString(R.string.ConversationActivity_calls_not_supported), - getString(R.string.ConversationActivity_this_device_does_not_appear_to_support_dial_actions)); - } + CommunicationActions.startInsecureCall(requireActivity(), recipient.get()); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java index 4a8fd435a3..4dc0e81e06 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -1165,16 +1165,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity if (isSecure) { CommunicationActions.startVoiceCall(this, recipient); } else { - try { - Intent dialIntent = new Intent(Intent.ACTION_DIAL, - Uri.parse("tel:" + recipient.requireSmsAddress())); - startActivity(dialIntent); - } catch (ActivityNotFoundException anfe) { - Log.w(TAG, anfe); - Dialogs.showAlertDialog(this, - getString(R.string.ConversationActivity_calls_not_supported), - getString(R.string.ConversationActivity_this_device_does_not_appear_to_support_dial_actions)); - } + CommunicationActions.startInsecureCall(this, recipient); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/CommunicationActions.java b/app/src/main/java/org/thoughtcrime/securesms/util/CommunicationActions.java index a15f50c27b..08d07fcaba 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/CommunicationActions.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/CommunicationActions.java @@ -7,11 +7,6 @@ import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.AsyncTask; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AlertDialog; -import androidx.core.app.TaskStackBuilder; - import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -19,18 +14,25 @@ import android.os.ResultReceiver; import android.text.TextUtils; import android.widget.Toast; -import org.thoughtcrime.securesms.conversation.ConversationActivity; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; +import androidx.core.app.TaskStackBuilder; + import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.WebRtcCallActivity; +import org.thoughtcrime.securesms.conversation.ConversationActivity; import org.thoughtcrime.securesms.database.DatabaseFactory; +import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.ringrtc.RemotePeer; import org.thoughtcrime.securesms.service.WebRtcCallService; -import org.thoughtcrime.securesms.util.concurrent.SimpleTask; public class CommunicationActions { + private static final String TAG = Log.tag(CommunicationActions.class); + public static void startVoiceCall(@NonNull Activity activity, @NonNull Recipient recipient) { if (TelephonyUtil.isAnyPstnLineBusy(activity)) { Toast.makeText(activity, @@ -118,6 +120,18 @@ public class CommunicationActions { }.execute(); } + public static void startInsecureCall(@NonNull Activity activity, @NonNull Recipient recipient) { + new AlertDialog.Builder(activity) + .setTitle(R.string.CommunicationActions_insecure_call) + .setMessage(R.string.CommunicationActions_carrier_charges_may_apply) + .setPositiveButton(R.string.CommunicationActions_call, (d, w) -> { + d.dismiss(); + startInsecureCallInternal(activity, recipient); + }) + .setNegativeButton(R.string.CommunicationActions_cancel, (d, w) -> d.dismiss()) + .show(); + } + public static void composeSmsThroughDefaultApp(@NonNull Context context, @NonNull Recipient recipient, @Nullable String text) { Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:" + recipient.requireSmsAddress())); if (text != null) { @@ -135,6 +149,17 @@ public class CommunicationActions { } } + private static void startInsecureCallInternal(@NonNull Activity activity, @NonNull Recipient recipient) { + try { + Intent dialIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + recipient.requireSmsAddress())); + activity.startActivity(dialIntent); + } catch (ActivityNotFoundException anfe) { + Log.w(TAG, anfe); + Dialogs.showAlertDialog(activity, + activity.getString(R.string.ConversationActivity_calls_not_supported), + activity.getString(R.string.ConversationActivity_this_device_does_not_appear_to_support_dial_actions)); + } + } private static void startCallInternal(@NonNull Activity activity, @NonNull Recipient recipient, boolean isVideo) { Permissions.with(activity) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cd78befb46..955ff871c4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -137,6 +137,8 @@ Start voice call? Cancel Call + Insecure call + Carrier charges may apply. The number you are calling is not registered with Signal. This call will be placed through your mobile carrier, not over the internet. Your safety number with %1$s has changed. This could either mean that someone is trying to intercept your communication, or that %2$s simply reinstalled Signal.