天天看點

【親測有效】WebView内的本地網頁,使用XMLHttpRequest加載失敗

問題描述

使用WebView來顯示本地網頁時,如果開發人員在網頁裡使用了XMLHttpRequest來額外加載本地檔案,在部分手機上會呈現下列的錯誤訊息:

【親測有效】WebView内的本地網頁,使用XMLHttpRequest加載失敗

問題原因

發生這個錯誤的原因,是因為Android基于安全性的考慮,從Android 4.1版開始禁止了WebView内的本地網頁使用XMLHttpRequest來讀取本地檔案(4.1版之前無限制)。這也就造成了「Android 4.1之前的手機」可以正常使用XMLHttpRequest,而「Android 4.1之後的手機」無法正常使用XMLHttpRequest。

解決方案

使用WebView原生提供的「AllowFileAccessFromFileURLs」方法,來重新開啟XMLHttpRequest讀取檔案功能,後續在WebView中執行的本地網頁就可以正常使用XMLHttpRequest來讀取本地檔案内容。

// WebSettings
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
   settings.setAllowFileAccessFromFileURLs(true);
}

           

繼續閱讀