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,如需转载请自行联系原作者

相关文章
|
5月前
|
网络协议 Shell 网络安全
解决两个 Android 模拟器之间无法网络通信的问题
让同一个 PC 上运行的两个 Android 模拟器之间能相互通信,出(qiong)差(ren)的智慧。
57 3
|
5月前
|
程序员 开发工具 Android开发
Android|WebView 禁止长按,限制非白名单域名的跳转层级
如何限制 WebView 仅域名白名单网址能随意跳转,并禁用长按选择文字。
80 2
|
7月前
|
安全 网络安全 Android开发
安卓与iOS开发:选择的艺术网络安全与信息安全:漏洞、加密与意识的交织
【8月更文挑战第20天】在数字时代,安卓和iOS两大平台如同两座巍峨的山峰,分别占据着移动互联网的半壁江山。它们各自拥有独特的魅力和优势,吸引着无数开发者投身其中。本文将探讨这两个平台的特点、优势以及它们在移动应用开发中的地位,帮助读者更好地理解这两个平台的差异,并为那些正在面临选择的开发者提供一些启示。
148 56
|
7月前
|
安全 网络安全 Android开发
探索安卓开发之旅:从新手到专家网络安全与信息安全:防范网络威胁,保护数据安全
【8月更文挑战第29天】在这篇技术性文章中,我们将踏上一段激动人心的旅程,探索安卓开发的世界。无论你是刚开始接触编程的新手,还是希望提升技能的资深开发者,这篇文章都将为你提供宝贵的知识和指导。我们将从基础概念入手,逐步深入到安卓开发的高级主题,包括UI设计、数据存储、网络通信等方面。通过阅读本文,你将获得一个全面的安卓开发知识体系,并学会如何将这些知识应用到实际项目中。让我们一起开启这段探索之旅吧!
|
7月前
|
Java Android开发 Kotlin
Android项目架构设计问题之要在Glide库中加载网络图片到ImageView如何解决
Android项目架构设计问题之要在Glide库中加载网络图片到ImageView如何解决
70 0
|
7月前
|
Java Android开发 开发者
Android项目架构设计问题之使用Retrofit2作为网络库如何解决
Android项目架构设计问题之使用Retrofit2作为网络库如何解决
123 0
|
9月前
|
安全 网络协议 算法
Android网络基础面试题之HTTPS的工作流程和原理
HTTPS简述 HTTPS基于TCP 443端口,通过CA证书确保服务器身份,使用DH算法协商对称密钥进行加密通信。流程包括TCP握手、证书验证(公钥解密,哈希对比)和数据加密传输(随机数加密,预主密钥,对称加密)。特点是安全但慢,易受特定攻击,且依赖可信的CA。每次请求可能复用Session ID以减少握手。
92 2
|
9月前
|
缓存 网络协议 Android开发
Android网络面试题之Http1.1和Http2.0
HTTP/1.1 引入持久连接和管道机制提升效率,支持分块传输编码和更多请求方式如PUT、PATCH。Host字段指定服务器域名,RANGE用于断点续传。HTTP/2变为二进制协议,实现多工处理,头信息压缩和服务器推送,减少延迟并优化资源加载。HTTP不断发展,从早期的简单传输到后来的高效交互。
108 0
Android网络面试题之Http1.1和Http2.0
|
8月前
|
Web App开发 JavaScript 前端开发
Android端使用WebView注入一段js代码实现js调用android
Android端使用WebView注入一段js代码实现js调用android
195 0
|
3月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
95 17

热门文章

最新文章

  • 1
    Android历史版本与APK文件结构
  • 2
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 4
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 5
    【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
  • 6
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 7
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 8
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
  • 9
    Android实战经验之Kotlin中快速实现MVI架构
  • 10
    即时通讯安全篇(一):正确地理解和使用Android端加密算法