android的webview是如何使用的网络上一搜索就是一大页面的资料。通常我们通过webview来访问web页面都是在网络的情况下,一旦没有网络就会显示"无法找到该网页"的信息,这样会暴露我们的连接,所以我们需要一个有好的提示,并且不会暴露链接的方法。这时候WebViewClient的onReceivedError方法就派上了用场!废话不多说直接上代码。
1、创建android的工程,编写main.xml布局代码
2、编写activity代码
代码就是这样的,以上的代码只是做个笔记,存在很多不足的地方,希望大家能够根据具体情况进行处理。
上面代码中,loadData显示中文可能会出现乱码的情况。解决办法如下
无网络时候或网络出错的情况!
1、创建android的工程,编写main.xml布局代码
01 | <RelativeLayout xmlns:android= "http://schemas.android.com/apk/res/android" |
02 | xmlns:tools= "http://schemas.android.com/tools" |
03 | android:layout_width= "match_parent" |
04 | android:layout_height= "match_parent" > |
05 | |
06 | <WebView |
07 | android:id= "@+id/webview" |
08 | android:layout_width= "fill_parent" |
09 | android:layout_height= "fill_parent" /> |
10 | |
11 | </RelativeLayout> |
2、编写activity代码
01 | package com.xzw.test.webview; |
02 | |
03 | import android.os.Bundle; |
04 | import android.app.Activity; |
05 | import android.graphics.Bitmap; |
06 | import android.util.Log; |
07 | import android.view.Menu; |
08 | import android.webkit.WebView; |
09 | import android.webkit.WebViewClient; |
10 | |
11 | public class MainActivity extends Activity { |
12 | |
13 | private static final String TAG = MainActivity. class .getSimpleName(); |
14 | |
15 | private String errorHtml = "" ; |
16 | WebView mWebView; |
17 | |
18 | @Override |
19 | public void onCreate(Bundle savedInstanceState) { |
20 | super .onCreate(savedInstanceState); |
21 | setContentView(R.layout.activity_main); |
22 | errorHtml = "<html><body><h1>Page not find!</h1></body></html>" ; |
23 | mWebView = (WebView) findViewById(R.id.webview); |
24 | mWebView.getSettings().setJavaScriptEnabled( true ); |
25 | |
26 | mWebView.loadUrl( "http://www.baidu.com" ); |
27 | Log.i(TAG, "--onCreate--" ); |
28 | |
29 | //设置web视图的客户端 |
30 | mWebView.setWebViewClient( new MyWebViewClient()); |
31 | } |
32 | |
33 | |
34 | @Override |
35 | protected void onResume() { |
36 | |
37 | super .onResume(); |
38 | Log.i(TAG, "--onResume()--" ); |
39 | } |
40 | |
41 | public class MyWebViewClient extends WebViewClient{ |
42 | |
43 | @Override |
44 | public boolean shouldOverrideUrlLoading(WebView view, String url) { |
45 | Log.i(TAG, "-MyWebViewClient->shouldOverrideUrlLoading()--" ); |
46 | view.loadUrl(url); |
47 | return true ; |
48 | } |
49 | |
50 | @Override |
51 | public void onPageStarted(WebView view, String url, Bitmap favicon) { |
52 | Log.i(TAG, "-MyWebViewClient->onPageStarted()--" ); |
53 | super .onPageStarted(view, url, favicon); |
54 | } |
55 | |
56 | @Override |
57 | public void onPageFinished(WebView view, String url) { |
58 | Log.i(TAG, "-MyWebViewClient->onPageFinished()--" ); |
59 | super .onPageFinished(view, url); |
60 | } |
61 | |
62 | |
63 | @Override |
64 | public void onReceivedError(WebView view, int errorCode, |
65 | String description, String failingUrl) { |
66 | super .onReceivedError(view, errorCode, description, failingUrl); |
67 | |
68 | Log.i(TAG, "-MyWebViewClient->onReceivedError()--\n errorCode=" +errorCode+ " \ndescription=" +description+ " \nfailingUrl=" +failingUrl); |
69 | //这里进行无网络或错误处理,具体可以根据errorCode的值进行判断,做跟详细的处理。 |
70 | view.loadData(errorHtml, "text/html" , "UTF-8" ); |
71 | |
72 | |
73 | } |
74 | } |
75 | } |
代码就是这样的,以上的代码只是做个笔记,存在很多不足的地方,希望大家能够根据具体情况进行处理。
上面代码中,loadData显示中文可能会出现乱码的情况。解决办法如下
1 | mWebView.getSettings().setDefaultTextEncodingName( "UTF-8" ); //设置默认的显示编码 |
无网络时候或网络出错的情况!