安全相关(去掉不必要的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的概念非常类似. 参见 Mozilla
前端存储相关设置(方便前端工程师在客户端存储数据)
//支持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();
}
}
来源:oschina
链接:https://my.oschina.net/u/214372/blog/673031