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

来源:互联网 发布:怎么投诉淘宝客服人员 编辑:程序博客网 时间:2024/05/01 08:58
android的webview是如何使用的网络上一搜索就是一大页面的资料。通常我们通过webview来访问web页面都是在网络的情况下,一旦没有网络就会显示"无法找到该网页"的信息,这样会暴露我们的连接,所以我们需要一个有好的提示,并且不会暴露链接的方法。这时候WebViewClient的onReceivedError方法就派上了用场!废话不多说直接上代码。

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代码
01package com.xzw.test.webview;
02  
03import android.os.Bundle;
04import android.app.Activity;
05import android.graphics.Bitmap;
06import android.util.Log;
07import android.view.Menu;
08import android.webkit.WebView;
09import android.webkit.WebViewClient;
10  
11public classMainActivity extends Activity {
12      
13    privatestatic final String TAG = MainActivity.class.getSimpleName();
14      
15    privateString errorHtml = "";
16    WebView mWebView;
17      
18    @Override
19    publicvoid 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(newMyWebViewClient());
31    }
32  
33      
34    @Override
35    protectedvoid onResume() {
36       
37        super.onResume();
38           Log.i(TAG,"--onResume()--");
39    }
40       
41    publicclass MyWebViewClient extendsWebViewClient{
42          
43        @Override
44        publicboolean shouldOverrideUrlLoading(WebView view, String url) {
45              Log.i(TAG,"-MyWebViewClient->shouldOverrideUrlLoading()--");
46             view.loadUrl(url);
47            returntrue;
48        }
49          
50        @Override
51        publicvoid onPageStarted(WebView view, String url, Bitmap favicon) {
52              Log.i(TAG,"-MyWebViewClient->onPageStarted()--");
53            super.onPageStarted(view, url, favicon);
54        }
55          
56        @Override
57        publicvoid onPageFinished(WebView view, String url) {
58              Log.i(TAG,"-MyWebViewClient->onPageFinished()--");
59            super.onPageFinished(view, url);
60        }
61          
62          
63        @Override
64        publicvoid 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显示中文可能会出现乱码的情况。解决办法如下
1mWebView.getSettings().setDefaultTextEncodingName("UTF-8");  //设置默认的显示编码


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




0 0