免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
android: Webview處理404、500、斷網(wǎng)、timeout頁(yè)面的問(wèn)題
一、問(wèn)題描述
當(dāng)前APP中有很多跳轉(zhuǎn)H5的情況,使用的是WebView去加載。如果某個(gè)H5頁(yè)面不存在,那么就會(huì)跳轉(zhuǎn)到WebView默認(rèn)的404頁(yè)面,在某些手機(jī)上這個(gè)頁(yè)面可能就是一個(gè)空白頁(yè)面。
然后,我司測(cè)試給設(shè)計(jì)說(shuō),不行了,太丑了!要設(shè)計(jì)一個(gè)好看點(diǎn)的,然后就有了本文的需求——定制404頁(yè)面。
初始的時(shí)候直接調(diào)用了onReceivedError 發(fā)現(xiàn)無(wú)法正常監(jiān)測(cè)錯(cuò)誤碼,后來(lái)又調(diào)用onReceivedHttpError 也是有點(diǎn)問(wèn)題,然后搜索,發(fā)現(xiàn)了這么一篇文章?,才明白原來(lái)6.0之前和之后的處理是有差別的,原文已經(jīng)寫(xiě)的很好,現(xiàn)摘錄并補(bǔ)充如下:
二、解決方案
1、6.0以上版本解決方案
好在Google在Android6.0修復(fù)了這個(gè)問(wèn)題。根據(jù)google官網(wǎng)提供的最新的官網(wǎng)文檔,我們可以重寫(xiě)onReceivedHttpError()方法可以捕獲http Error。
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("tel:")) {
return true;
}
return false;
}
@TargetApi(android.os.Build.VERSION_CODES.M) //171016 處理404錯(cuò)誤
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request,
WebResourceResponse errorResponse) {
super.onReceivedHttpError(view, request, errorResponse);
// 這個(gè)方法在6.0才出現(xiàn)
int statusCode = errorResponse.getStatusCode();
System.out.println("onReceivedHttpError code = " + statusCode);
if (404 == statusCode || 500 == statusCode) {
view.loadUrl("about:blank");// 避免出現(xiàn)默認(rèn)的錯(cuò)誤界面
view.loadUrl(errorUrl_404);
}
}
});
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
2、6.0之前版本的解決方案
這是google關(guān)于這個(gè)issue的: ? https://link.jianshu.com?t=https://code.google.com/p/android/issues/detail?id=968" target="_blank">? ?https://code.google.com/p/android/issues/detail?id=968???
下面是google開(kāi)發(fā)人員回復(fù):
這里寫(xiě)圖片描述
Google雖然在Android6.0解決了這個(gè)問(wèn)題,但是在Android6.0以下我們是不能直接獲取到404或者500的。那么在Android6.0以下的系統(tǒng)我們?nèi)绾翁幚?04這樣的問(wèn)題呢?
兩種解決方案:
(1)、方案一(推薦)通過(guò)獲取網(wǎng)頁(yè)的title,判斷是否為系統(tǒng)默認(rèn)的404頁(yè)面
我們可以在WebChromeClient()子類(lèi)中可以重寫(xiě)他的onReceivedTitle()方法
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
//171016 處理404錯(cuò)誤 android 6.0 以下通過(guò)title獲取
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
if (title.contains("404") || title.contains("500") || title.contains("Error")) {
view.loadUrl("about:blank");// 避免出現(xiàn)默認(rèn)的錯(cuò)誤界面
view.loadUrl(errorUrl_404);
}
}
}
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
(2)、方案二(推薦) 服務(wù)器后臺(tái)是能獲取404、500的,最好的辦法是讓后臺(tái)捕獲
最好的方案就是讓H5或后臺(tái)去處理,因?yàn)樗麄円材塬@取到404或500。
三、補(bǔ)充:
(1)、判斷斷網(wǎng)、超時(shí)等情況
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
// 斷網(wǎng)或者網(wǎng)絡(luò)連接超時(shí)
if (errorCode == ERROR_HOST_LOOKUP || errorCode == ERROR_CONNECT || errorCode == ERROR_TIMEOUT) {
view.loadUrl("about:blank"); // 避免出現(xiàn)默認(rèn)的錯(cuò)誤界面
view.loadUrl(mErrorUrl);
}
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
上面的那個(gè) onReceivedErrod已經(jīng)被廢棄,用下面這個(gè)代替,代碼如下:
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
int errorCode = error.getErrorCode();
// 斷網(wǎng)或者網(wǎng)絡(luò)連接超時(shí)
if (errorCode == ERROR_HOST_LOOKUP || errorCode == ERROR_CONNECT || errorCode == ERROR_TIMEOUT) {
view.loadUrl("about:blank"); // 避免出現(xiàn)默認(rèn)的錯(cuò)誤界面
view.loadUrl(mErrorUrl);
}
}
});
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
四、附錄
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
7.5.6 WebView處理網(wǎng)頁(yè)返回的錯(cuò)誤碼信息
webView詳解
Android WebView的使用
Android WebView的Js對(duì)象注入漏洞解決方案
使用Jquery Mobile設(shè)計(jì)Android通訊錄
android之在view中內(nèi)嵌瀏覽器的方法
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服