Android webview(二) 經常使用設置

安全相關(去掉沒必要要的JavaBridge)

//這個Java Bridge是WebView本身添加的
//在Api 17之前,javascript能夠經過java對象進行反射,執行一些不安全的操做
webView.removeJavascriptInterface("searchBoxJavaBridge_");

js相關

//設置支持javascript,默認是false
WebSettings.setJavaScriptEnabled(true);

縮放相關

//使WebView支持經過手勢或者縮放控制器來縮放頁面,默認是true
//該設置不影響 WebView.zoomIn()和WebView.zoomOut()
WebSettings.setSupportZoom(true);

//設置使用默認的縮放控制器,默認是false
WebSettings.setBuiltInZoomControls(true);

//不顯示默認的+/-縮放控制View, 默認是true
WebSettings.setDisplayZoomControls(false);

加載圖片策略相關

//設置是否自動加載圖片,默認是`true`,若是設置爲`false`,那麼全部圖片都不會被加載,包括本地圖片.
WebSettings.setLoadsImagesAutomatically(true);

//設置是否阻止加載網絡圖片,默認是`false`,若是設置爲`true`,那麼網絡圖片將不會加載.(能夠先設置爲true,而後再設置爲false,來加快頁面加載速度)
WebSettings.setBlockNetworkImage(false);

//設置是否阻止加載網絡資源(不單單是圖片),默認是`false`,若是設置爲`true`,那麼網絡上的js,css,圖片等資源都不會加載
WebSettings.setBlockNetworkLoads(false);

渲染相關

//設置渲染線程的優先級
//該方法在 Api 18以後被廢棄,優先級由WebView本身管理
//不過任然建議將其設置爲 HIGH,來提升頁面渲染速度
WebSettings.setRenderPriority(RenderPriority.HIGH);

Viewport相關

//設置使用 寬 的Viewpoint,默認是false
//Android browser以及chrome for Android的設置是`true`
//而WebView的默認設置是`false`
//若是設置爲`true`,那麼網頁的可用寬度爲`980px`,而且能夠經過 meta data來設置
//若是設置爲`false`,那麼可用區域和WebView的顯示區域有關.
WebSettings.setUseWideViewPort(true);

//若是webview內容寬度大於顯示區域的寬度,那麼將內容縮小,以適應顯示區域的寬度, 默認是false
WebView.setLoadWithOverviewMode(true);
<!--若是WebSettings.getUseWideViewPort 是true, 那麼能夠經過meta來設置 Viewport -->
<!--例如將其可用寬度設置爲 480px, 而且禁用縮放功能-->
<head>
    <meta name="viewport" content="width=480, user-scalable=no" />
</head>

<!--若是WebSettings.getUseWideViewPort 是false, 那麼 不能 經過meta來設置-->
其效果相似於:
<meta name="viewport" content="width=device-width"/>

注意: 這裏的px和一般說的像素不一樣,他和dp的概念很是相似. 參見 Mozillajavascript

前端存儲相關設置(方便前端工程師在客戶端存儲數據)

//支持H5的 application cache 的功能
WebSettings.setAppCacheEnabled(true);
//設置 application cache 的存儲路徑(一般存儲js,css,圖片等)
WebSetting.setAppCachePath("xxx");

//支持 H5 的session storage和local storage
WebSettings.setDomStorageEnabled(true);

//支持javascript讀,寫db
WebSettings.setDatabaseEnabled(true);
//設置js建立的db文件的路徑, Api 19之後廢棄,直接有webview管理
WebSettings.setDatabasePath("xxx");

緩存相關設置

//設置加載資源時,如何使用cache
//默認設置是:WebSettings.LOAD_DEFAULT
//當WebView正常加載一個頁面時,若是緩存命中且沒有過時,則使用緩存數據,不然從網絡加載,當WebView.goBack()時,若是緩存命中,直接使用,不會驗證是否過時
//可用的其餘設置:LOAD_CACHE_ELSE_NETWORK, LOAD_NO_CACHE, LOAD_CACHE_ONLY
WebSettings.setCacheModel(WebSettings.LOAD_DEFAULT);

cookie相關

public static void synCookies(Context context, String url) {
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);//默認就是true 
    cookieManager.setCookie(url, cookies);
    if(Build.VERSION.SDK_INT < 21) {
	    CookieSyncManager.createInstance(context).sync();
	} else {
		cookieManager.flush();
	}
}
相關文章
相關標籤/搜索