android 的 webview 是如何使用的网络上一搜索就是一大页面的资料。通常我们通过 webview 来访问 web 页面都是在网络的情况下,一旦没有网络就会显示 "无法找到该网页" 的信息,这样会暴露我们的连接,所以我们需要一个有好的提示,并且不会暴露链接的方法。这时候 WebViewClient 的 onReceivedError 方法就派上了用场!废话不多说直接上代码。
1、创建 android 的工程,编写 main.xml 布局代码
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
2、编写 activity 代码
packagecom.xzw.test.webview;
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.graphics.Bitmap;
importandroid.util.Log;
importandroid.view.Menu;
importandroid.webkit.WebView;
importandroid.webkit.WebViewClient;
publicclassMainActivityextendsActivity {
privatestaticfinalString TAG = MainActivity.class.getSimpleName();
privateString errorHtml ="";
WebView mWebView;
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
errorHtml = "
Page not find!
";mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("http://www.baidu.com");
Log.i(TAG, "--onCreate--");
//设置web视图的客户端
mWebView.setWebViewClient(newMyWebViewClient());
}
@Override
protectedvoidonResume() {
super.onResume();
Log.i(TAG, "--onResume()--");
}
publicclassMyWebViewClientextendsWebViewClient{
@Override
publicbooleanshouldOverrideUrlLoading(WebView view, String url) {
Log.i(TAG, "-MyWebViewClient->shouldOverrideUrlLoading()--");
view.loadUrl(url);
returntrue;
}
@Override
publicvoidonPageStarted(WebView view, String url, Bitmap favicon) {
Log.i(TAG, "-MyWebViewClient->onPageStarted()--");
super.onPageStarted(view, url, favicon);
}
@Override
publicvoidonPageFinished(WebView view, String url) {
Log.i(TAG, "-MyWebViewClient->onPageFinished()--");
super.onPageFinished(view, url);
}
@Override
publicvoidonReceivedError(WebView view,interrorCode,
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!以上有不足的地方请大家多多指教!