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

前言

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

解決步驟

1. 啟用mixed content

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

  • 系統(tǒng)默認禁止了mixed content和第三方cookie。可以使用setMixedContentMode() 和 setAcceptThirdPartyCookies()以分別啟用。
  • 系統(tǒng)現(xiàn)在可以智能選擇HTML文檔的portion來繪制。這種新特性可以減少內(nèi)存footprint并改進性能。若要一次性渲染整個HTML文檔,可以調(diào)用這個方法enableSlowWholeDocumentDraw()
  • 如果你的app的target api低于21:系統(tǒng)允許mixed content和第三方cookie,并且總是一次性渲染整個HTML文檔。
    在使用WebView的類中添加如下代碼:
        // android 5.0及以上默認不支持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. 設置WebView接受所有網(wǎng)站的證書

<font color=green>在認證證書不被Android所接受的情況下,我們可以通過設置重寫WebViewClient的onReceivedSslError方法在其中設置接受所有網(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默認的處理方式
                handler.proceed();// 接受所有網(wǎng)站的證書
                // handleMessage(Message msg);// 進行其他處理
            }
});

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

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容