WebView鏈接為https,內(nèi)容圖片為http,圖片不能正常顯示
在Android5.0及以上系統(tǒng),當(dāng)WebView加載的鏈接為https開頭,但是鏈接里面的內(nèi)容,比如圖片為http鏈接,這時(shí)候,圖片就不能正常加載(加載不出來)。
原因:
從Android5.0開始,WebView默認(rèn)不支持同時(shí)加載Https和Http混合模式。
解決方案:
在webview加載頁面之前,設(shè)置加載模式為MIXED_CONTENT_ALWAYS_ALLOW,代碼如下
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
如果以上還不能解決,可以嘗試設(shè)置WebView接受所有網(wǎng)站的證書,當(dāng)然這會(huì)帶來安全問題,請謹(jǐn)慎使用
在認(rèn)證證書不被Android所接受的情況下,我們可以通過設(shè)置重寫WebViewClient的onReceivedSslError方法在其中設(shè)置接受所有網(wǎng)站的證書來解決,具體代碼如下:
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view,
SslErrorHandler handler, SslError error) {
// TODO Auto-generated method stub
// super.onReceivedSslError(view, handler, error);// 這里一定要去除,否則設(shè)置無效
// handler.cancel();// Android默認(rèn)的處理方式
handler.proceed();// 接受所有網(wǎng)站的證書
// handleMessage(Message msg);// 進(jìn)行其他處理
}
});