import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.webkit.WebChromeClient;
+import android.webkit.WebResourceError;
+import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
+import android.widget.Toast;
+
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
setContentView(R.layout.activity_webview);
final WebView mainWebView = (WebView) findViewById(R.id.mainWebView);
+ final Activity mainWebViewActivity = this;
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
}
mainWebView.setWebViewClient(new WebViewClient() {
- // setWebViewClient makes this WebView the default handler for URLs inside the app, so that links are not kicked out to other apps.
- // Save the URL to formattedUrlString and update urlTextBox before loading mainWebView.
+ // shouldOverrideUrlLoading makes this WebView the default handler for URLs inside the app, so that links are not kicked out to other apps.
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
mainWebView.loadUrl(url);
return true;
}
+ public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
+ Toast.makeText(mainWebViewActivity, "Error loading " + request + " Error: " + error, Toast.LENGTH_SHORT).show();
+ }
+
// Update the URL in urlTextBox when the page starts to load.
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// Allow pinch to zoom.
mainWebView.getSettings().setBuiltInZoomControls(true);
- // Hide zoom controls API is 11 or greater.
+ // Hide zoom controls if the API is 11 or greater.
if (Build.VERSION.SDK_INT >= 11) {
mainWebView.getSettings().setDisplayZoomControls(false);
}
return true;
}
- // @TargetApi(11) turns off the errors regarding copy and paste, which are removied from view in menu_webview.xml for lower version of Android.
+ // @TargetApi(11) turns off the errors regarding copy and paste, which are removed from view in menu_webview.xml for lower version of Android.
@Override
@TargetApi(11)
public boolean onOptionsItemSelected(MenuItem menuItem) {
android:id="@+id/addressBarFrameLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="wrap_content" >
+ android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/addressBarLinearLayout"
</LinearLayout>
<!-- android:max changes the maximum ProgressBar value from 10000 to 100 to match progress percentage. -->
+ <!-- android:layout_height="2dp" works best for API 23 "Marshmallow", but "3dp" is required for visibility on API <= 22. -->
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
- android:layout_height="7dp"
+ android:layout_height="3dp"
android:layout_gravity="bottom"
android:max="100"
android:progressTint="#FF0097FF"