Android 7.0系統(tǒng)webview 顯示https頁面空白處理方法
最近開發(fā)的時(shí)候,偶爾遇到在線上穩(wěn)定運(yùn)行的webview內(nèi)嵌的h5頁面加載不出來,一直定位不到具體原因(因?yàn)槲覀冏约鹤龅募嫒菪詼y(cè)試上不重現(xiàn)),看系統(tǒng)日志也沒有發(fā)現(xiàn)什么問題,后來咨詢了用戶手機(jī)的型號(hào),發(fā)現(xiàn)是7.0或者6.0以上的個(gè)別機(jī)型會(huì)出現(xiàn)。
后來借到了一臺(tái)業(yè)務(wù)的手機(jī),型號(hào)是:三星 S6 EDGE,SM-G9205,在大多數(shù)機(jī)型上運(yùn)行正常的頁面,在這個(gè)機(jī)器上如下圖:

這個(gè)頁面在近期的變更是從http切換到https,由于之前的頁面是http,我們?cè)谇袚Q的時(shí)候,除了url之外,并未對(duì)webview的ssl校驗(yàn)做特殊的處理。
問題就出在這里,webview在加載https的時(shí)候,通常會(huì)用手機(jī)根證書對(duì)h5的頁面進(jìn)行校驗(yàn),這個(gè)校驗(yàn)不一定成功。
失敗的時(shí)候會(huì)回調(diào)webviewclient的onReceivedSslError函數(shù)。
既然如此,我們可以在證書校驗(yàn)失敗的情況下,將其跳過,繼續(xù)加載就可以了,如下:
public void onReceivedSslError(WebView view, android.webkit.SslErrorHandler handler, android.net.http.SslError error) {
handler.proceed();//這里校驗(yàn)失敗的時(shí)候放過
};
重新運(yùn)行后發(fā)現(xiàn),這個(gè)方法是可行的,他在ssl校驗(yàn)失敗的時(shí)候繞過了這個(gè)步驟。
但是問題又來了,我們切換https,本來就是希望利用ssl這一層,保證加載頁面的安全性,現(xiàn)在統(tǒng)一跳過,不是達(dá)不到安全的初衷了嗎。
繼續(xù)調(diào)試,我們將 onReceivedSslError這里面的SslError信息打出來,發(fā)現(xiàn)是下面的錯(cuò)誤:
SslError.SSL_INVALID//校驗(yàn)過程遇到了bug
這個(gè)錯(cuò)誤是webviewclient在校驗(yàn)ssl的過程中,出現(xiàn)了bug。
查閱源碼后發(fā)現(xiàn),全量的錯(cuò)誤一共有如下幾類:

其中有的是證書本身有問題,有的是校驗(yàn)出了bug,因此全部放過雖然是最便捷的,但可能不是最好的。
最后我判斷,在ssl校驗(yàn)失敗的情況下,如果是校驗(yàn)過程遇到了bug,那就放過,其他情況就cancel:
if(error.getPrimaryError() == android.net.http.SslError.SSL_INVALID ){// 校驗(yàn)過程遇到了bug
handler.proceed();
}else{
handler.cancel();
}
以上這篇Android 7.0系統(tǒng)webview 顯示https頁面空白處理方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
VideoView實(shí)現(xiàn)視頻無縫連續(xù)播放
這篇文章主要為大家詳細(xì)介紹了VideoView實(shí)現(xiàn)視頻無縫連續(xù)播放,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
詳解Android開發(fā)之MP4文件轉(zhuǎn)GIF文件
這篇文章介紹的是將錄下來的視頻選取一小段轉(zhuǎn)為 GIF 文件,不僅時(shí)間段可以手動(dòng)選取,而且還需要支持截取視頻的局部區(qū)域轉(zhuǎn)為 GIF,網(wǎng)上調(diào)研了一下技術(shù)方案,覺得還是有必要把實(shí)現(xiàn)過程拿出來分享下,有需要的可以直接拿過去用。下面來一起看看。2016-08-08
關(guān)于Android Device Monitor 無法打開問題
大家好,本篇文章主要講的是關(guān)于Android Device Monitor 無法打開問題,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01
Android Xutils3網(wǎng)絡(luò)請(qǐng)求的封裝詳解及實(shí)例代碼
這篇文章主要介紹了Android Xutils3網(wǎng)絡(luò)請(qǐng)求的封裝詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-12-12
Android實(shí)現(xiàn)簡(jiǎn)單下拉篩選框
這篇文章主要為大家詳細(xì)介紹了一款簡(jiǎn)單靈活的Android下拉篩選框,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10
Android webview實(shí)現(xiàn)拍照的方法
這篇文章主要介紹了Android webview實(shí)現(xiàn)拍照的方法的相關(guān)資料,希望通過本文能幫助到大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10
Android實(shí)現(xiàn)探探圖片滑動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)探探圖片滑動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
Android實(shí)現(xiàn)Camera2預(yù)覽和拍照效果
這篇文章主要為大家詳細(xì)介紹了Android開發(fā)之一個(gè)類實(shí)現(xiàn)Camera2預(yù)覽和拍照效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10

