WebSettings基本配置
通过Android webview所提供的WebSettings
对象,开发者可以根据业务需求对webview进行一系列的基本配置:
WebSettings webSetting=mWebview.getSettings();
开发者需要根据自身业务在Webview的创建和初始化过程中对一些基本属性和参数进行配置:
setSupportZoom(boolean support)
设置Webview是否支持屏幕上的缩放工具和手势控制来进行页面缩放控制,默认为true
setDisplayZoomControls(boolean enabled)
是否展示缩放工具,默认为 true
setBuiltInZoomControls (boolean enabled)
设置Webview是否使用自身的缩放机制,默认为false
setUseWideViewPort (boolean use)
设置是否支持
<meta>
标签中对viewport的设置,默认值为false;
setCacheMode(int mode)
WebView页面数据的缓存模式
正常页面加载会加载缓存并按需判断内容是否需要重新验证。 如果是页面返回,页面内容不会重新加载,直接从缓存中恢复。 setCacheMode允许客户端根据指定的模式来使用缓存:
- LOAD_DEFAULT 默认加载方式, 可以根据cache-control指定来获取页面数据
- LOAD_CACHE_ELSE_NETWORK 按网络情况使用缓存
- LOAD_NO_CACHE 不使用缓存
- LOAD_CACHE_ONLY 只使用缓存
setDomStorageEnabled (boolean flag)
允许使用DOM存储相关的API
setAllowFileAccess (boolean allow)
设置Webview是否可以访问系统文件,默认为true;
如果禁止访问系统文件,则无法加载本地html文件。
setAllowFileAccessFromFileURLs (boolean flag)
设置是否允许以
file://
URL的方式加载的Javascript访问本地其他文件内容。
在Android 4.1 以上版本默认值是false
setAllowUniversalAccessFromFileURLs (boolean flag)
设置是否允许以
file://
URL的方式加载的Javascript访问其他源的数据。
在Android 4.1 以上版本默认值是false。
考虑到Webview的使用安全,默认情况下应将以上两个配置设置为false,避免通过File URL加载的JavaScript来访问本地文件或其他源的数据;
setJavaScriptEnabled (boolean flag)
Webview是否可以执行JavaScript,默认为false
设置为true可能会潜在XSS攻击的安全隐患,为了降低风险,建议对于非安全协议的url,禁用此选项。
setMixedContentMode (int mode)
设置当HTTPS源中试图访问HTTP源中资源的处理方式
- MIXED_CONTENT_NEVER_ALLOW 不允许
- MIXED_CONTENT_ALWAYS_ALLOW 允许
setSupportMultipleWindows (boolean support)
是否支持多窗口模式,如果为true, 则需要实现WebChromeClient的onCreateWindow方法
setSavePassword (boolean save)
是否开启密码存储功能,默认为true
在用户输入密码时,会弹出提示框,询问用户是否保存密码,如果选择"是",密码会被明文保到
/data/data/com.package.name/databases/webview.db
, 因此建议禁用。