/*
- * Copyright 2015-2017 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2015-2017 Soren Stoutner <soren@stoutner.com>.
*
* Download cookie code contributed 2017 Hendrik Knackstedt. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
*
@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;
}
}
privacyBrowserRuntime.exec("rm -rf " + privateDataDirectoryString + "/cache");
// Delete the `app_webview` folder, which contains an additional `WebView` cache. See `https://code.google.com/p/android/issues/detail?id=233826&thanks=233826&ts=1486670530`.
- privacyBrowserRuntime.exec("rm -rf " + privacyBrowserRuntime + "/app_webview");
+ privacyBrowserRuntime.exec("rm -rf " + privateDataDirectoryString + "/app_webview");
} catch (IOException e) {
// Do nothing if an error is thrown.
}
// 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;
privacyBrowserRuntime.exec("rm -rf " + privateDataDirectoryString + "/cache");
// Delete the `app_webview` folder, which contains an additional `WebView` cache. See `https://code.google.com/p/android/issues/detail?id=233826&thanks=233826&ts=1486670530`.
- privacyBrowserRuntime.exec("rm -rf " + privacyBrowserRuntime + "/app_webview");
+ privacyBrowserRuntime.exec("rm -rf " + privateDataDirectoryString + "/app_webview");
} catch (IOException e) {
// Do nothing if an error is thrown.
}
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;