@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
- // Use an external email program if the link begins with `mailto:`.
- if (url.startsWith("mailto:")) {
+ if (url.startsWith("mailto:")) { // Load the URL in an external email program because it begins with `mailto:`.
// We use `ACTION_SENDTO` instead of `ACTION_SEND` so that only email programs are launched.
Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
// Make it so.
startActivity(emailIntent);
+
+ // Returning `true` indicates the application is handling the URL.
return true;
} else { // Load the URL in Privacy Browser.
- loadUrl(url);
- return true;
+ // Apply the domain settings for the new URL.
+ applyDomainSettings(url);
+
+ // Returning `false` causes the current `WebView` to handle the URL and prevents it from adding redirects to the history list.
+ return false;
}
}
// Hide zoom controls.
mainWebView.getSettings().setDisplayZoomControls(false);
+ // Set `mainWebView` to use a wide viewport. Otherwise, some web pages will be scrunched and some content will render outside the screen.
+ mainWebView.getSettings().setUseWideViewPort(true);
+
+ // Set `mainWebView` to load in overview mode (zoomed out to the maximum width).
+ mainWebView.getSettings().setLoadWithOverviewMode(true);
+
// Initialize cookieManager.
cookieManager = CookieManager.getInstance();
return true;
case R.id.share:
+ // Setup the share string.
+ String shareString;
+ if (webViewTitle != null) {
+ shareString = webViewTitle + " – " + urlTextBox.getText().toString();
+ } else {
+ shareString = urlTextBox.getText().toString();
+ }
+
+ // Create the share intent.
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
- shareIntent.putExtra(Intent.EXTRA_TEXT, urlTextBox.getText().toString());
+ shareIntent.putExtra(Intent.EXTRA_TEXT, shareString);
shareIntent.setType("text/plain");
+
+ // Make it so.
startActivity(Intent.createChooser(shareIntent, "Share URL"));
return true;
String unformattedUrlString = urlTextBox.getText().toString().trim();
// Check to see if `unformattedUrlString` is a valid URL. Otherwise, convert it into a search.
- if ((Patterns.WEB_URL.matcher(unformattedUrlString).matches()) || (unformattedUrlString.contains("localhost"))) {
+ if ((Patterns.WEB_URL.matcher(unformattedUrlString).matches()) || (unformattedUrlString.startsWith("http://")) || (unformattedUrlString.startsWith("https://"))) {
// Add `http://` at the beginning if it is missing. Otherwise the app will segfault.
if (!unformattedUrlString.startsWith("http")) {
unformattedUrlString = "http://" + unformattedUrlString;