1. 程式人生 > >android之webview無網路情況下簡單處理

android之webview無網路情況下簡單處理

android的webview是如何使用的網路上一搜索就是一大頁面的資料。通常我們通過webview來訪問web頁面都是在網路的情況下,一旦沒有網路就會顯示"無法找到該網頁"的資訊,這樣會暴露我們的連線,所以我們需要一個有好的提示,並且不會暴露連結的方法。這時候WebViewClient的onReceivedError方法就派上了用場!廢話不多說直接上程式碼。

1、建立android的工程,編寫main.xml佈局程式碼


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程式碼
01 package com.xzw.test.webview;
02
03 import android.os.Bundle;
04 import android.app.Activity;
05 import
android.graphics.Bitmap;
06 import android.util.Log;
07 import android.view.Menu;
08 import android.webkit.WebView;
09 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
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顯示中文可能會出現亂碼的情況。解決辦法如下
1 mWebView.getSettings().setDefaultTextEncodingName("UTF-8");  //設定預設的顯示編碼


無網路時候或網路出錯的情況!




相關推薦

androidwebview網路情況簡單處理

android的webview是如何使用的網路上一搜索就是一大頁面的資料。通常我們通過webview來訪問web頁面都是在網路的情況下,一旦沒有網路就會顯示"無法找到該網頁"的資訊,這樣會暴露我們的連線,所以我們需要一個有好的提示,並且不會暴露連結的方法。這時候WebVie

android webview網路情況處理

import com.yck.utils.diy.LoadingDialog; import com.yck.utils.net.HttpUrl; import com.yck.utils.tools.MyLog; import android.content.Dialo

ORACLE11gR2-RACOCR備份情況損壞恢復

OCR損壞情景介紹:做OCR備份恢復實驗,OCR有4份自動備份。將OCR磁盤從+DATA替換為+OCR2(/dev/raw/raw4) 完成之後使用ocrconfig -manualbackup手動備份OCR,完成之後對/dev/raw/raw4執行dd操作。關閉集群,啟動集群,發現集群不能啟動。 問題分析

Kali Linux ——在網路情況安裝無線網絡卡驅動

1、背景:   今日剛剛開始學習kali linux,眾所周知,安裝完成後,系統是沒有無線網絡卡驅動的,這就對學生黨造成相當的困擾:校園網要連線有線是需要認證客戶端的,而認證客戶端只有windows端,如此一來,無線網也連不上,有線網也連不上,這就......很尷尬。   因此我走訪各大部落格,雖然沒能直接解

【Docker】CentOS7 上網路情況安裝

自建虛擬機器,但是連線不上網路,只能通過下載rpm包進行安裝docker 環境:CentOS 7.3.1611 x64 在這裡能找到想要的docker相關的所有包 我這裡只下載了三個包。分別是 docker-ce-selinux-17.03.1.ce-0.1.rc

linux 修改yum源 在網路情況使用yum下載

百度地址https://jingyan.baidu.com/article/d2b1d102b8b0825c7f37d46b.html[local]  name=Instructor Server Repository     baseurl=file:///var/yum/

android 應用在網路非常差的情況處理

app在無網路情況下非常好判斷,但是當網路很差,但是又有連結就不好辦了。使用的retrofit+rxJava,自定義了一個subscribe就可以很好的處理網路差的情況public class MySubscrible<T> extends Subscriber&

Android : WebView網路時的圖片顯示解決方案

需求場景:必須在已經構建快取的基礎之上,否則資料都無法正常顯示,何談圖片呢? 接下來直接上程式碼嘍,小夥伴們如果有更好的解決方式可以隨時聯絡我哦! <WebView

Android WebView實現拉重新整理和其他相關重新整理功能

最近專案中需要用到WebView下拉重新整理的功能,經過查詢資料終於完成了此功能,現在拿出來和大家分享一下。希望對大家有所幫助。 效果如下圖:                        程式碼: activity.xml <?xml version="1

AndroidWebView的使用樣例——WebSetting、WebViewClient、WebChromeClient

create per wid spa var ani 事件 col kuaidi100 點擊查看原文 代碼直接下載http://download.csdn.net/detail/metis100/8514837 第一步,xml Manifest中要設

CentsOS7情況安裝mysql5.7

rman debug x86-64 https conda oot fma 支持 depend 1.需求就不用講了,客戶現場,政府環境,銀行環境,大多是沒網的,所以無網安裝是很有必要的 mysql下載路徑:https://dev.mysql.com/downloads/my

AndroidWebView優化

前言 隨著app的迭代,嵌入的html5介面越來越多了,Webview這個強大元件引起的問題越發的多起來,例如: 1、WebView導致的oom問題 2、Android版本不同,採用了不同的核心,相容性crash 3、不同版本實現不同,甚至URI不規範也會引起不同程度的問題

AndroidwebView與js互動

一、java呼叫js操作: 1.佈局檔案: <WebView android:id="@+id/web" android:layout_width="match_parent" android:layout_height="mat

docker 網路環境使用docker載入映象

1. 假如由於網路原因,需要在一臺無網路的電腦上執行映象,docker是支援的。 最關鍵的是,學會使用docker的 save 命令。 你需要做的主要有3步驟: 1:先從一個有網路的電腦下載docker映象 docker pull centos 2:儲存映象到本地檔案 docker save

AndroidWebView 防止呼叫系統瀏覽器開啟頁面

android在WebView中載入url,防止呼叫系統瀏覽器載入 只要重寫webView的WebViewClient 具體程式碼如下: web_adSentence.setWebViewClient(new WebViewClient() { //覆蓋

androidXListview,上拉拉出現BUG

第一次發,不要吐槽哈 上拉載入若螢幕資料不滿會出bug;若上拉後再去下拉也會出現bug,即資料跟著手勢移動不復原 上拉載入,資料未充滿螢幕時出現bug,解決方式:在XListView中去掉onTouchEvent()方法中default下的else public boolean onTo

5.1 “繼承”情況的物件構造

考慮如下的程式片段: Point global; //1 Point foobar() { Point local; //2 Point* head = new Point; //3 *head = local; //stuff delete heap; //4 return l

Android---ButterKnife-View注入框架(簡單介紹和在Studio中安裝)

ButterKnife-View注入框架(簡單介紹和在Studio中安裝) 1.簡單介紹 Butter Knife使用簡單介紹 作為一名Android開發,是不是經常厭煩了大量的findViewById以及setOnClickListener程式碼,而

Android獲取行動網路ip

1、獲取行動網路ip 2、程式碼 public String getLocalIpAddress() { try { for (Enumeration

Android中Wifi未開啟情況獲取Mac地址

原來以為沒有開啟wifi功能是不能夠獲取wifi網絡卡mac地址的,在真機測試後發現能夠獲取到Mac地址只是獲取的ip為0,當然wifi未連線狀態下是肯定沒有IP分配的。具體看看下面: AndroidManifest.xml程式碼: 1  Java程式碼   <