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

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 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显示中文可能会出现乱码的情况。解决办法如下
1mWebView.getSettings().setDefaultTextEncodingName("UTF-8");  //设置默认的显示编码


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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值