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, 因此建议禁用。