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

简介:

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

 

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

 

 

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


本文转自xuzw13 51CTO博客,原文链接:http://blog.51cto.com/xuzhiwei/1083694,如需转载请自行联系原作者

相关文章
|
29天前
|
数据库 Android开发 开发者
构建高效Android应用:采用Kotlin协程优化网络请求处理
【2月更文挑战第30天】 在移动应用开发领域,网络请求的处理是影响用户体验的关键环节。针对Android平台,利用Kotlin协程能够极大提升异步任务处理的效率和简洁性。本文将探讨如何通过Kotlin协程优化Android应用中的网络请求处理流程,包括协程的基本概念、网络请求的异步执行以及错误处理等方面,旨在帮助开发者构建更加流畅和响应迅速的Android应用。
|
3月前
|
安全 API Android开发
Android网络和数据交互: 解释Retrofit库的作用。
Android网络和数据交互: 解释Retrofit库的作用。
38 0
|
3月前
|
安全 网络协议 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
29 0
|
3月前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
21 0
|
4月前
|
XML Java Android开发
Android App开发网络通信中使用okhttp下载和上传图片、文件讲解及实战(超详细实现用户注册信息上传 附源码)
Android App开发网络通信中使用okhttp下载和上传图片、文件讲解及实战(超详细实现用户注册信息上传 附源码)
131 0
|
4月前
|
XML JSON Java
Android App网络通信中通过okhttp调用HTTP接口讲解及实战(包括GET、表单格式POST、JSON格式POST 附源码)
Android App网络通信中通过okhttp调用HTTP接口讲解及实战(包括GET、表单格式POST、JSON格式POST 附源码)
145 0
|
2月前
|
XML Android开发 数据格式
安卓和webview交互
安卓和webview交互
25 0
|
3月前
|
JSON Java Android开发
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
24 0
|
4月前
|
XML JSON Android开发
[Android]网络框架之Retrofit(kotlin)
[Android]网络框架之Retrofit(kotlin)
53 0
|
4月前
|
缓存 JSON Android开发
[Android]网络框架之OkHttp(详细)(kotlin)
[Android]网络框架之OkHttp(详细)(kotlin)
139 0