android之webview无网络情况下简单处理

android的webview是如何使用的网络上一搜索就是一大页面的资料。通常我们通过webview来访问web页面都是在网络的情况下,一旦没有网络就会显示"无法找到该网页"的信息,这样会暴露我们的连接,所以我们需要一个有好的提示,并且不会暴露链接的方法。这时候WebViewClient的onReceivedError方法就派上了用场!废话不多说直接上代码。

1、创建android的工程,编写main.xml布局代码


01 "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    
07         android:id="@+id/webview"
08         android:layout_width="fill_parent"
09         android:layout_height="fill_parent" />
10   
11


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 = "

Page not find!

"
;
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");  //设置默认的显示编码


无网络时候或网络出错的情况!




你可能感兴趣的:(webview)