Android WebView 無法載入Https(或載入錯誤)
前陣子為了釋出新版本APP,沒有時間去解決Android 中webView無法載入https協議,由於能載入http協議就沒有去深究原因,今天要釋出新版本,還有足夠的時間,就查了一下這個問題。
Google了一下,查到了一些方法,在這給大家一個參考:
1、重寫WebView的onReceivedSslError方法,新增handler.proceed方法,但App如果上架GooglePlay會被警告的。所以建議使用下2的方法。
webView.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){
handler.proceed();
}
});
2、Android webView 從 Lollipop 開始預設不開MixedContentMode,因此,我們開啟即可滿足我們大多數需求。
webView.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings()
.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
});
結果:
我的問題並不是出現在這些地方,而是出現了在載入Url時,部分Url使用的事http而不是https,導致無法載入,功能實現不了。那麼要求後臺開發人員把http改成https。就這樣,成功了。
測試:
1、呼叫高德地圖沒法顯示,前端工程師用了http......那麼改為https
2、部分功能沒實現,因為後臺的沒有加證書.....那麼,全部改回http
3、嗯,等被插黃圖廣告。