1. 程式人生 > >android5.0載入h5頁面顯示空白

android5.0載入h5頁面顯示空白

我這個問題出現在android5.0以上---android6.0以下的機子上,  其他版本沒問題。

客服給我反饋說這些問題全部出現在 oppo、vivo上面,都是android5.1.1的版本上。

解決方法:

啟用mixed content

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

  • 系統預設禁止了mixed content和第三方cookie。可以使用setMixedContentMode() 和 setAcceptThirdPartyCookies()以分別啟用。
  • 系統現在可以智慧選擇HTML文件的portion來繪製。這種新特性可以減少記憶體footprint並改進效能。若要一次性渲染整個HTML文件,可以呼叫這個方法enableSlowWholeDocumentDraw()
  • 如果你的app的target api低於21:系統允許mixed content和第三方cookie,並且總是一次性渲染整個HTML文件。 
    在使用WebView的類中新增如下程式碼:
/**
 * 啟用mixed content    android 5.0以上預設不支援Mixed Content
 *
 * 5.0以上允許載入http和https混合的頁面(5.0以下預設允許,5.0+預設禁止)
 * */
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}

上面的方法就解決了android5.0載入h5空白的問題。

其他普遍載入空白的問題就是一些常見的方法(版本比如:android4.4以上版本、android5.0以上版本、android6.0以上版本之類的)需要設定以下方法:

1、適配https的ssl證書問題

public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        handler.proceed();  // 接受所有網站的證書
//        super.onReceivedSslError(view, handler, error);
    }

2、android6.0以下版本載入h5頁面之後,h5裡面的方法不能被觸發,也就是點選沒反應,解決方法如下:

/**設定適應Html5的一些方法*/
webView.getSettings().setDomStorageEnabled(true);

設定為true就可以了,如果還是不能點選就可以去找前端的哥們來讓他修改他的程式碼了,  親身經歷過!!!