在最近項目中,調用第三方網頁加載在Webview中,一直打不開,顯示白板,但是瀏覽器卻可以打開,一臉懵逼,先上碼:
WebSettings settings = wvPingduoduo.getSettings();
// 支持javascript
settings.setJavaScriptEnabled(true);
// 設置可以支持縮放
settings.setSupportZoom(true);
// 設置出現縮放工具
settings.setBuiltInZoomControls(true);
// 縮放控制器按鈕隱藏
settings.setDisplayZoomControls(false);
// 擴大比例的縮放
settings.setUseWideViewPort(true);
// 自適應屏幕
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
settings.setLoadWithOverviewMode(true);
// 顯示圖片
settings.setLoadsImagesAutomatically(true);
webView.setWebViewClient(new WebViewClient() {
/**
* 網頁開始加載
*/
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
/**
* 網頁加載結束
*/
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
/**
* 所有跳轉的鏈接都會在此方法中回調
*/
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
webView.loadUrl(url);
return true;
}
});
// 加載網頁
webView.loadUrl(url);
解決方法:加一句就行
//開啓DOM
settings.setDomStorageEnabled(true);
按照API的說明 Sets whether the DOM storage API is enabled. The default value is false.
也就是是否開啓本地DOM存儲。
應該是Html 5中的localStorage(可以使用Android4.4手機和Chrome Inspcet Device聯調),用於持久化的本地存儲,除非主動刪除數據,否則數據是永遠不會過期的,絕大多數的瀏覽器都是支持 localStorage 的,但是鑑於它的安全特性(任何人都能讀取到它,儘管有相應的限制,將敏感數據存儲在這裏依然不是明智之舉),Android 默認是關閉該功能的。