android的webview是如何使用的网络上一搜索就是一大页面的资料。通常我们通过webview来访问web页面都是在网络的情况下,一旦没有网络就会显示"无法找到该网页"的信息,这样会暴露我们的连接,所以我们需要一个有好的提示,并且不会暴露链接的方法。这时候WebViewClient的onReceivedError方法就派上了用场!废话不多说直接上代码。
1、创建android的工程,编写main.xml布局代码
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <WebView
- android:id="@+id/webview"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent" />
- </RelativeLayout>
2、编写activity代码
- package com.xzw.test.webview;
- import android.os.Bundle;
- import android.app.Activity;
- import android.graphics.Bitmap;
- import android.util.Log;
- import android.view.Menu;
- import android.webkit.WebView;
- import android.webkit.WebViewClient;
- public class MainActivity extends Activity {
- private static final String TAG = MainActivity.class.getSimpleName();
- private String errorHtml = "";
- WebView mWebView;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- errorHtml = "<html><body><h1>Page not find!</h1></body></html>";
- mWebView = (WebView) findViewById(R.id.webview);
- mWebView.getSettings().setJavaScriptEnabled(true);
- mWebView.loadUrl("http://www.baidu.com");
- Log.i(TAG, "--onCreate--");
- //设置web视图的客户端
- mWebView.setWebViewClient(new MyWebViewClient());
- }
- @Override
- protected void onResume() {
- super.onResume();
- Log.i(TAG, "--onResume()--");
- }
- public class MyWebViewClient extends WebViewClient{
- @Override
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
- Log.i(TAG, "-MyWebViewClient->shouldOverrideUrlLoading()--");
- view.loadUrl(url);
- return true;
- }
- @Override
- public void onPageStarted(WebView view, String url, Bitmap favicon) {
- Log.i(TAG, "-MyWebViewClient->onPageStarted()--");
- super.onPageStarted(view, url, favicon);
- }
- @Override
- public void onPageFinished(WebView view, String url) {
- Log.i(TAG, "-MyWebViewClient->onPageFinished()--");
- super.onPageFinished(view, url);
- }
- @Override
- public void onReceivedError(WebView view, int errorCode,
- String description, String failingUrl) {
- super.onReceivedError(view, errorCode, description, failingUrl);
- Log.i(TAG, "-MyWebViewClient->onReceivedError()--\n errorCode="+errorCode+" \ndescription="+description+" \nfailingUrl="+failingUrl);
- //这里进行无网络或错误处理,具体可以根据errorCode的值进行判断,做跟详细的处理。
- view.loadData(errorHtml, "text/html", "UTF-8");
- }
- }
- }
代码就是这样的,以上的代码只是做个笔记,存在很多不足的地方,希望大家能够根据具体情况进行处理。
上面代码中,loadData显示中文可能会出现乱码的情况。解决办法如下
- mWebView.getSettings().setDefaultTextEncodingName("UTF-8"); //设置默认的显示编码
无网络时候或网络出错的情况!
很简单的一个demo!以上有不足的地方请大家多多指教!
转载于:https://blog.51cto.com/xuzhiwei/1083694