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

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

 


  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  2.     xmlns:tools="http://schemas.android.com/tools" 
  3.     android:layout_width="match_parent" 
  4.     android:layout_height="match_parent" > 
  5.  
  6.     <WebView 
  7.         android:id="@+id/webview" 
  8.         android:layout_width="fill_parent" 
  9.         android:layout_height="fill_parent" /> 
  10.  
  11. </RelativeLayout> 

2、编写activity代码

 


  1. package com.xzw.test.webview; 
  2.  
  3. import android.os.Bundle; 
  4. import android.app.Activity; 
  5. import android.graphics.Bitmap; 
  6. import android.util.Log; 
  7. import android.view.Menu; 
  8. import android.webkit.WebView; 
  9. 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.     } 

代码就是这样的,以上的代码只是做个笔记,存在很多不足的地方,希望大家能够根据具体情况进行处理。

上面代码中,loadData显示中文可能会出现乱码的情况。解决办法如下

 


  1. mWebView.getSettings().setDefaultTextEncodingName("UTF-8");  //设置默认的显示编码 

 

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

 

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

 

    很简单的一个demo!以上有不足的地方请大家多多指教!