1. 啟用mixed content
在Android5.0中,WebView方面做了些修改,如果你的系統(tǒng)target api為21以上:
系統(tǒng)默認(rèn)禁止了mixed content和第三方cookie。可以使用setMixedContentMode() 和 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的類中添加如下代碼:
// android5.0以上默認(rèn)不支持Mixed Content
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {? ? webView.getSettings().setMixedContentMode(? ? ? ? WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
2. 設(shè)置WebView接受所有網(wǎng)站的證書
在認(rèn)證證書不被Android所接受的情況下,我們可以通過設(shè)置重寫WebViewClient的onReceivedSslError方法在其中設(shè)置接受所有網(wǎng)站的證書來解決,具體代碼如下:
webView.setWebViewClient(newWebViewClient() {@OverridepublicvoidonReceivedSslError(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è)置無效。