webSetting.setAllowContentAccess(true); //是否允许在WebView中访问内容URL(Content Url) 默认允许
webSetting.setAllowFileAccess(true); // 是否允许访问文件,默认允许。注意,这里只是允许或禁止对文件系统的访问
webSetting.setAllowFileAccessFromFileURLs(true);// 是否允许运行在一个URL环境(the context of a file scheme URL)中的JavaScript访问来自其他URL环境的内容,为了保证 安全,应该不允许
webSetting.setAppCacheEnabled(true); // 应用缓存API是否可用,默认值false 结合setAppCachePath(String)使用。
String appCacheDir = this .getApplicationContext().getDir("cache", Context.MODE_PRIVATE).getPath();
webSetting.setAppCachePath(appCacheDir); //设置应用缓存文件的路径。为了让应用缓存API可用,此方法必须传入一个应用可写的路径。 该方法只会执行一次,重复调用会被忽略。
webSetting.setLoadsImagesAutomatically(true); // WebView是否下载图片资源,默认为true。如果该设置项的值由false变为true,WebView展示的内容所引用的所有的图片资源将自动下载。
webSetting.setBlockNetworkImage(false);//是否禁止从网络(通过http和https URI schemes访问的资源)下载图片资源,默认值为false 除非setLoadsImagesAutomatically()返回 true,否则该方法无效
webSetting.setBuiltInZoomControls(true); //是否使用内置的缩放机制 默认值为false。 内置的缩放机制包括屏幕上的缩放控件(浮于WebView内容之上)和缩放手势的运用。通过 setDisplayZoomControls(boolean)可以控制是否显示这些控件
webSetting.setDisplayZoomControls(false); // 使用内置的缩放机制时是否展示缩放控件,默认值true。参见setBuiltInZoomControls(boolean).
webSetting.setCacheMode(WebSettings.LOAD_DEFAULT); // 重写使用缓存的方式,默认值LOAD_DEFAULT。缓存的使用方式基于导航类型,正常的页面加载,检测缓存,需要时缓存内容复现。导航返回时,内容 不会复现,只有内容会从缓存盘中恢复。该方法允许客户端通过指定LOAD_DEFAULT, LOAD_CACHE_ELSE_NETWORK, LOAD_NO_CACHE or LOAD_CACHE_ONLY的其中一项来重写其行为。
webSetting.setDatabaseEnabled(true); // 数据库存储API是否可用,默认值false如何正确设置数据存储API参见setDatabasePath(String)。该设置对同一进程中的所有WebView实例均有 效。注意,只能在当前进程的任意WebView加载页面之前修改此项,因为此节点之后WebView的实现类可能会忽略该项设置的改变。
// webSetting.setDatabasePath ("") // 已废弃,数据库路径由实现(implementation)管理,调用此方法无效。
webSetting.setDomStorageEnabled(true);//DOM存储API是否可用,默认false。
webSetting.setJavaScriptCanOpenWindowsAutomatically(true); // 让JavaScript自动打开窗口,默认false。适用于JavaScript方法window.open()。
webSetting.setJavaScriptEnabled(true);//设置WebView是否允许执行JavaScript脚本,默认false,不允许
webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL); //设置布局,会引起WebView的重新布局(relayout),默认值NARROW_COLUMNS 视频适应屏幕
webSetting.setLoadWithOverviewMode(true); // 是否允许WebView度超出以概览的方式载入页面,默认false。即缩小内容以适应屏幕宽度。该项设置在内容宽度超出WebView控件的宽度时生效,例 如当getUseWideViewPort() 返回true时。
webSetting.setMediaPlaybackRequiresUserGesture(true);// WebView是否需要用户的手势进行媒体播放,默认值为true。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webSetting.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); // 当一个安全的来源(origin)试图从一个不安全的来源加载资源时配置WebView的行为 LOLLIPOP版本默认值MIXED_CONTENT_NEVER_ALLOW,WebView首选的最安全的操作模式为MIXED_CONTENT_NEVER_ALLOW ,不鼓励使用 MIXED_CONTENT_ALWAYS_ALLOW。
}
webSetting.setNeedInitialFocus(true); // 调用requestFocus(int, Android.graphics.Rect)时是否需要设置节点获取焦点,默认值为true。
webSetting.setSaveFormData(true); // WebView是否保存表单数据,默认值true。
webSetting.setSupportMultipleWindows(false); // 设置WebView是否支持多窗口。如果设置为true,主程序要实现onCreateWindow(WebView, boolean, boolean, Message),默认false。如果设置了true并且没有实现onCreateWindiw 会在onShouldOverrideUrlLoading监听不到跳转的url
webSetting.setSupportZoom(true);//WebView是否支持使用屏幕上的缩放控件和手势进行缩放,默认值true。设置setBuiltInZoomControls(boolean)可以使用特殊的缩放机制。
webSetting.setUseWideViewPort(true);// WebView是否支持HTML的“viewport”标签或者使用wide viewport。设置值为true时,布局的宽度总是与WebView控件上的设备无关像素(device- dependent pixels)宽度一致。当值为true且页面包含viewport标记,将使用标签指定的宽度。
webSetting.setUserAgentString("android"); // 设置WebView的用户代理字符串。如果字符串为null或者empty,将使用系统默认值。注意从KITKAT版本开始,加载网页时改变用户代理会让WebView 再次初始化加载。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(App.isDebug);
}
webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND); // 在API18以上已废弃。未来将不支持插件,不要使用。告诉WebView启用、禁用或者有即用(on demand)的插件,即用模式是指如果存在一个可以处 理嵌入内容的插件,会显示一个占位图标,点击时开启。默认值OFF。