diff --git a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java index 4f04a88cb..d8541a9cc 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.showBrowserIntent(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.showBrowserIntent(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..d5b1b1b03 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; @@ -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.showBrowserIntent(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..d96086bda 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.showBrowserIntent(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..8e6696f51 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.showBrowserIntent(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..164da43b1 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.showBrowserIntent(WebxdcStoreActivity.this, url); } return true; } diff --git a/src/main/java/org/thoughtcrime/securesms/util/IntentUtils.java b/src/main/java/org/thoughtcrime/securesms/util/IntentUtils.java index 19ecb4caa..cce503f59 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 { @@ -21,7 +25,11 @@ public class IntentUtils { public static void showBrowserIntent(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() {