Add warning dialog for insecure calls.

master
Alex Hart 2020-03-05 12:38:05 -04:00 committed by Greyson Parrelli
parent a70023a32b
commit 2152b4a2cd
4 changed files with 36 additions and 27 deletions

View File

@ -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());
}
}

View File

@ -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);
}
}

View File

@ -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)

View File

@ -137,6 +137,8 @@
<string name="CommunicationActions_start_voice_call">Start voice call?</string>
<string name="CommunicationActions_cancel">Cancel</string>
<string name="CommunicationActions_call">Call</string>
<string name="CommunicationActions_insecure_call">Insecure call</string>
<string name="CommunicationActions_carrier_charges_may_apply">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.</string>
<!-- ConfirmIdentityDialog -->
<string name="ConfirmIdentityDialog_your_safety_number_with_s_has_changed">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.</string>