diff --git a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java index 4f04a88cb..e5bbed76d 100644 --- a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java @@ -54,6 +54,7 @@ import org.thoughtcrime.securesms.profiles.ProfileMediaConstraints; import org.thoughtcrime.securesms.proxy.ProxySettingsActivity; import org.thoughtcrime.securesms.qr.RegistrationQrActivity; import org.thoughtcrime.securesms.scribbles.ScribbleActivity; +import org.thoughtcrime.securesms.util.IntentUtils; import org.thoughtcrime.securesms.util.Prefs; import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.views.ProgressDialog; @@ -331,7 +332,7 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements privacyPolicyBtn.setOnClickListener(view -> { if (!isDcLogin) { - WebViewActivity.openUrlInBrowser(this, "https://" + providerHost + "/privacy.html"); + IntentUtils.showInBrowser(this, "https://" + providerHost + "/privacy.html"); } }); @@ -350,7 +351,7 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements .create(); view.findViewById(R.id.use_other_server).setOnClickListener((v) -> { - WebViewActivity.openUrlInBrowser(this, INSTANCES_URL); + IntentUtils.showInBrowser(this, INSTANCES_URL); signUpDialog.dismiss(); }); view.findViewById(R.id.login_button).setOnClickListener((v) -> { diff --git a/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java index 6d7f3ddd0..031239d04 100644 --- a/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java @@ -16,7 +16,6 @@ import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_PROXY_ENABLED; import static org.thoughtcrime.securesms.connect.DcHelper.getContext; import static org.thoughtcrime.securesms.service.IPCAddAccountsService.ACCOUNT_DATA; -import android.content.ActivityNotFoundException; import android.content.DialogInterface; import android.content.Intent; import android.content.res.Resources; @@ -438,7 +437,7 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve .setPositiveButton(R.string.perm_continue, (dialog, which)-> { // pass control to browser, we'll be back in business at (**) activity.oauth2Requested = System.currentTimeMillis(); - IntentUtils.showBrowserIntent(activity, oauth2url); + IntentUtils.showInBrowser(activity, oauth2url); oauth2started.set(true); }) .setCancelable(false) @@ -493,11 +492,7 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve if (provider!=null) { String url = provider.getOverviewPage(); if(!url.isEmpty()) { - try { - startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); - } catch (ActivityNotFoundException e) { - Toast.makeText(this, R.string.no_browser_installed, Toast.LENGTH_LONG).show(); - } + IntentUtils.showInBrowser(this, url); } else { // this should normally not happen Toast.makeText(this, "ErrProviderWithoutUrl", Toast.LENGTH_LONG).show(); diff --git a/src/main/java/org/thoughtcrime/securesms/WebViewActivity.java b/src/main/java/org/thoughtcrime/securesms/WebViewActivity.java index c1b118f4e..2c0ce9bd9 100644 --- a/src/main/java/org/thoughtcrime/securesms/WebViewActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/WebViewActivity.java @@ -26,6 +26,7 @@ import androidx.webkit.ProxyController; import androidx.webkit.ProxyConfig; import org.thoughtcrime.securesms.util.DynamicTheme; +import org.thoughtcrime.securesms.util.IntentUtils; public class WebViewActivity extends PassphraseRequiredActionBarActivity implements SearchView.OnQueryTextListener, @@ -278,16 +279,8 @@ public class WebViewActivity extends PassphraseRequiredActionBarActivity // onBackPressed() can be overwritten by derived classes as needed. // the default behavior (close the activity) is just fine eg. for Webxdc, Connectivity, HTML-mails - public static void openUrlInBrowser(Context context, String url) { - try { - context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); - } catch (ActivityNotFoundException e) { - Toast.makeText(context, R.string.no_browser_installed, Toast.LENGTH_LONG).show(); - } - } - protected boolean openOnlineUrl(String url) { - openUrlInBrowser(this, url); + IntentUtils.showInBrowser(this, url); // returning `true` causes the WebView to abort loading return true; } diff --git a/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java b/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java index 703bdbeaf..d9b54df0e 100644 --- a/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java @@ -8,7 +8,6 @@ import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.util.Base64; @@ -45,6 +44,7 @@ import org.json.JSONObject; import org.thoughtcrime.securesms.connect.AccountManager; import org.thoughtcrime.securesms.connect.DcEventCenter; import org.thoughtcrime.securesms.connect.DcHelper; +import org.thoughtcrime.securesms.util.IntentUtils; import org.thoughtcrime.securesms.util.JsonUtils; import org.thoughtcrime.securesms.util.MediaUtil; import org.thoughtcrime.securesms.util.Prefs; @@ -290,7 +290,7 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE addToHomeScreen(this, dcAppMsg.getId()); return true; case R.id.source_code: - openUrlInBrowser(this, sourceCodeUrl); + IntentUtils.showInBrowser(this, sourceCodeUrl); return true; case R.id.show_in_chat: showInChat(); diff --git a/src/main/java/org/thoughtcrime/securesms/WebxdcStoreActivity.java b/src/main/java/org/thoughtcrime/securesms/WebxdcStoreActivity.java index 23fa00ac5..2c840ceec 100644 --- a/src/main/java/org/thoughtcrime/securesms/WebxdcStoreActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/WebxdcStoreActivity.java @@ -23,6 +23,7 @@ import com.b44t.messenger.rpc.RpcException; import org.thoughtcrime.securesms.connect.DcHelper; import org.thoughtcrime.securesms.providers.PersistentBlobProvider; +import org.thoughtcrime.securesms.util.IntentUtils; import org.thoughtcrime.securesms.util.MediaUtil; import org.thoughtcrime.securesms.util.Prefs; import org.thoughtcrime.securesms.util.Util; @@ -68,7 +69,7 @@ public class WebxdcStoreActivity extends PassphraseRequiredActionBarActivity { } }); } else { - WebViewActivity.openUrlInBrowser(WebxdcStoreActivity.this, url); + IntentUtils.showInBrowser(WebxdcStoreActivity.this, url); } return true; } diff --git a/src/main/java/org/thoughtcrime/securesms/qr/QrCodeHandler.java b/src/main/java/org/thoughtcrime/securesms/qr/QrCodeHandler.java index 03d0fe78f..25c021744 100644 --- a/src/main/java/org/thoughtcrime/securesms/qr/QrCodeHandler.java +++ b/src/main/java/org/thoughtcrime/securesms/qr/QrCodeHandler.java @@ -99,7 +99,7 @@ public class QrCodeHandler { showDoneToast(activity); }); if (rawString.toLowerCase().startsWith("http")) { - builder.setNeutralButton(R.string.open, (d, b) -> IntentUtils.showBrowserIntent(activity, rawString)); + builder.setNeutralButton(R.string.open, (d, b) -> IntentUtils.showInBrowser(activity, rawString)); } builder.setNegativeButton(R.string.cancel, null); builder.setCancelable(false); @@ -182,7 +182,7 @@ public class QrCodeHandler { final String url = qrParsed.getText1(); String msg = String.format(activity.getString(R.string.qrscan_contains_url), url); builder.setMessage(msg); - builder.setPositiveButton(R.string.open, (dialog, which) -> IntentUtils.showBrowserIntent(activity, url)); + builder.setPositiveButton(R.string.open, (dialog, which) -> IntentUtils.showInBrowser(activity, url)); builder.setNegativeButton(android.R.string.cancel, null); builder.setNeutralButton(R.string.menu_copy_to_clipboard, (dialog, which) -> { Util.writeTextToClipboard(activity, url); diff --git a/src/main/java/org/thoughtcrime/securesms/util/IntentUtils.java b/src/main/java/org/thoughtcrime/securesms/util/IntentUtils.java index 19ecb4caa..70c4544cc 100644 --- a/src/main/java/org/thoughtcrime/securesms/util/IntentUtils.java +++ b/src/main/java/org/thoughtcrime/securesms/util/IntentUtils.java @@ -2,14 +2,18 @@ package org.thoughtcrime.securesms.util; import android.app.PendingIntent; +import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Build; +import android.widget.Toast; import androidx.annotation.NonNull; +import org.thoughtcrime.securesms.R; + import java.util.List; public class IntentUtils { @@ -19,9 +23,13 @@ public class IntentUtils { return resolveInfoList != null && resolveInfoList.size() > 1; } - public static void showBrowserIntent(Context context, String url) { + public static void showInBrowser(Context context, String url) { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); - context.startActivity(browserIntent); + try { + context.startActivity(browserIntent); + } catch (ActivityNotFoundException e) { + Toast.makeText(context, R.string.no_browser_installed, Toast.LENGTH_LONG).show(); + } } public static int FLAG_MUTABLE() { diff --git a/src/main/java/org/thoughtcrime/securesms/util/LongClickCopySpan.java b/src/main/java/org/thoughtcrime/securesms/util/LongClickCopySpan.java index 13a679b98..cda3b41c2 100644 --- a/src/main/java/org/thoughtcrime/securesms/util/LongClickCopySpan.java +++ b/src/main/java/org/thoughtcrime/securesms/util/LongClickCopySpan.java @@ -87,7 +87,7 @@ public class LongClickCopySpan extends ClickableSpan { QrCodeHandler qrCodeHandler = new QrCodeHandler(activity); qrCodeHandler.handleQrData(url); } else { - IntentUtils.showBrowserIntent(widget.getContext(), url); + IntentUtils.showInBrowser(widget.getContext(), url); } } } diff --git a/src/main/java/org/thoughtcrime/securesms/videochat/VideochatUtil.java b/src/main/java/org/thoughtcrime/securesms/videochat/VideochatUtil.java index 24418b403..dfd64f46b 100644 --- a/src/main/java/org/thoughtcrime/securesms/videochat/VideochatUtil.java +++ b/src/main/java/org/thoughtcrime/securesms/videochat/VideochatUtil.java @@ -35,7 +35,7 @@ public class VideochatUtil { DcContext dcContext = DcHelper.getContext(activity); DcMsg dcMsg = dcContext.getMsg(msgId); String videochatUrl = dcMsg.getVideochatUrl(); - IntentUtils.showBrowserIntent(activity, videochatUrl); + IntentUtils.showInBrowser(activity, videochatUrl); } }