Android5.0 WebView中Http和Https混合問題,無法顯示圖片解決

前言

Android系統(tǒng)Webview無法加載顯示對(duì)應(yīng)的資源等,那么,我們就要針對(duì)這一狀況作出對(duì)應(yīng)的處理。

解決步驟

1. 啟用mixed content

在Android5.0中,WebView方面做了些修改,如果你的系統(tǒng)target api為21以上:

  • 系統(tǒng)默認(rèn)禁止了mixed content和第三方cookie??梢允褂胹etMixedContentMode() 和 setAcceptThirdPartyCookies()以分別啟用。
  • 系統(tǒng)現(xiàn)在可以智能選擇HTML文檔的portion來繪制。這種新特性可以減少內(nèi)存footprint并改進(jìn)性能。若要一次性渲染整個(gè)HTML文檔,可以調(diào)用這個(gè)方法enableSlowWholeDocumentDraw()
  • 如果你的app的target api低于21:系統(tǒng)允許mixed content和第三方cookie,并且總是一次性渲染整個(gè)HTML文檔。
    在使用WebView的類中添加如下代碼:
        // android 5.0及以上默認(rèn)不支持Mixed Content
       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
            //或者
            webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
        }

Android官網(wǎng)解釋鏈接

2. 設(shè)置WebView接受所有網(wǎng)站的證書

<font color=green>在認(rèn)證證書不被Android所接受的情況下,我們可以通過設(shè)置重寫WebViewClient的onReceivedSslError方法在其中設(shè)置接受所有網(wǎng)站的證書來解決,具體代碼如下</font>

webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onReceivedSslError(WebView view,
                    SslErrorHandler handler, SslError error) {
                // TODO Auto-generated method stub
                // handler.cancel();// Android默認(rèn)的處理方式
                handler.proceed();// 接受所有網(wǎng)站的證書
                // handleMessage(Message msg);// 進(jìn)行其他處理
            }
});

注:在重寫WebViewClient的onReceivedSslError方法時(shí),注意一定要去除onReceivedSslError方法的super.onReceivedSslError(view, handler, error);,否則設(shè)置無效。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容