WebView使用的关键类

  • Post author:
  • Post category:其他


WebView的使用有几个十分重要的类:WebSettings,WebChromeClient ,WebViewClient。

WebSettings

管理WebView的设置状态。当第一次创建WebView时,它会得到一组默认设置。这些默认设置在调用对应的‘getter’方法时将会返回。调用getSettings()获取WebSettings对象将其绑定到WebView的生命周期中。如果WebView已经被销毁,再调用他的方法将抛出IllegalStateException异常。设置WebView如下:

WebView webview=findViewById(R.id.webview);
WebSettings webSettings=webview.getSettings();
webSettings.set...


设置:


setAllowContentAccess(boolean allow)


启用或禁用WebView中的内容URL访问。内容URl访问允许WebView加载来自安装在系统上的内容提供者的内容。默认启用。


setAllowFileAccess(boolean allow)


启用或禁用WebView中的文件访问。文件访问默认允许。**注意,这里仅启用或禁用文件系统访问。**Assets 和 resources 文件使用file:///android_asset和file:///android_res仍是可访问的。


setAllowFileAccessFromFileURLs(boolean flag)


设置是否允许在文件方案URL(file scheme URl)上下文中运行的JavaScript访问来自其他文件方案URL的内容。若要启用最严格的安全策略,则应禁用此设置。如果getAllowUniversalAccessFromFileURLs()的值为true,则忽略此设置的值。请注意,此设置仅影响JavaScript访问文件方案(file scheme)资源。其他方式访问这些资源是不受影响的,例如,从图像HTML元素。为了防止在定位ICE_CREAM_SANDWICH_MR1和更早版本时可能违反相同域策略,应该明确地将此值设置为false。


setAllowUniversalAccessFromFileURLs(boolean flag)


设置是否允许在文件方案URL上下文中运行的JavaScript访问来自任何来源的内容。同上。


setAppCacheEnabled(boolean flag)


设置是否应该启用应用程序缓存API。默认false。请注意,为了使应用程序缓存API得以启用,还必须向setAppCachePath(String)提供有效的数据库路径。


setAppCachePath(String appCachePath)


设置应用程序缓存文件路径。必须传入一个应用程序可写入的路径。此方法只应调用一次:忽略重复调用。


setBlockNetworkImage(boolean flag)


设置WebView是否不应从网络加载图像资源(通过http和https URI方案访问的资源)。请注意,除非getLoadsImagesAutomatically()返回true,否则此方法不起作用。默认false,加载图片。


setBlockNetworkLoads(boolean flag)


设置WebView是否不应该从网络加载资源。setBlockNetworkImage(boolean)只能避免加载图像资源。注意,如果此设置的值从true更改为false,则在调用ReLoad()之前不会获取WebView当前显示内容所引用的网络资源。如果应用程序没有Internet权限,则尝试设置false值将引发安全异常。如果应用程序具有Internet权限,则默认值为false,否则为true。


setBuiltInZoomControls(boolean enabled)


设置WebView是否使用其内置的缩放机制。内置的缩放机制包括在WebView内容上显示的屏幕缩放控件以及使用捏手势控制缩放。是否显示这些屏幕控件可以使用setDisplayZoomControls(boolean)来设置。(当网页限制缩放时,设置了该方法也将无法缩放)


setCacheMode(int mode)


设置缓存方式。缓存的使用方式基于导航类型。对于正常的页面加载,检查缓存并根据需要重新验证内容。在返回时,内容不会重新生效,而是仅从缓存中检索内容。此方法允许客户端通过指定LOAD_DEFAULT,LOAD_CACHE_ELSE_NETWORK,LOAD_NO_CACHE或LOAD_CACHE_ONLY来覆盖此行为。默认值LOAD_DEFAULT。


setCursiveFontFamily(String font)


设置草书字体系列名称,默认为“cursive”。


setDatabaseEnabled(boolean flag)


设置是否启用数据库存储API。默认false。这个设置是全局的,在一个进程中的所有WebView实例中都是有效的。


setDefaultFixedFontSize(int size)


设置默认的固定文字大小,默认为16。


setDefaultFontSize(int size)


设置默认字体大小,默认16。


setDefaultTextEncodingName(String encoding)


设置用于解码HTML页时使用的默认文本编码名称。


setDisabledActionModeMenuItems(int menuItems)


禁用菜单项模式行为包括menuItems 标签。


setDisplayZoomControls(boolean enabled)


设置WebView在使用内置缩放机制时是否应显示屏幕缩放控件。默认true。


setDomStorageEnabled(boolean flag)


设置是否启用DOM存储API。默认false。


setFantasyFontFamily(String font)


设置Fantasy字体系列名称。 默认是“fantasy”。


setFixedFontFamily(String font)


设置固定的字体系列名称。默认“monospace”。


setGeolocationEnabled(boolean flag)


设置是否启用地理位置。默认false。要启用Geolocation API需要以下:应用程序必须具有访问设备位置的权限,应用程序必须实现 onGeolocationPermissionsShowPrompt(String, GeolocationPermissions.Callback)回调,通过JavaScript地理位置API接收网页正在请求访问位置的通知。


setJavaScriptCanOpenWindowsAutomatically(boolean flag)


指示JavaScript自动打开窗口。默认false。


setJavaScriptEnabled(boolean flag)


允许WebView启用JavaScript执行。默认false。


setLayoutAlgorithm(WebSettings.LayoutAlgorithm l)


设置基础布局算法。默认NARROW_COLUMNS。


setLoadWithOverviewMode(boolean overview)


设置WebView是否以概览模式加载页面,缩小宽度以适合屏幕的内容。当内容宽度大于WebView控件的宽度时,将考虑此设置。


setLoadsImagesAutomatically(boolean flag)


设置WebView是否应加载图像资源。请注意,此方法控制所有图像的加载,包括使用数据URI方案嵌入的图像。


setMediaPlaybackRequiresUserGesture(boolean require)


设置WebView是否需要用户手势才能播放媒体。默认true。


setMinimumFontSize(int size)


设置最小字体。默认8。


setMinimumLogicalFontSize(int size)


设置最小逻辑字体大小。默认8。


setMixedContentMode(int mode)


配置WebView在安全来源尝试从不安全来源加载资源时的行为。


setNeedInitialFocus(boolean flag)


告诉WebView当调用requestFocus(int,android.graphics.Rect)时是否需要设置节点获取焦点。


setOffscreenPreRaster(boolean enabled)


setSafeBrowsingEnabled(boolean enabled)


设置是否启用安全浏览。安全浏览功能允许WebView通过验证链接来防范恶意软件和网络钓鱼攻击。使用清单标签可以禁用所有WebView的安全浏览功能。清单标记的优先级低于此API。


setSansSerifFontFamily(String font)


设置sans-serif字体系列名称。默认“sans-serif”。


setSaveFormData(boolean save)


设置WebView是否应保存表单数据。


setSerifFontFamily(String font)


设置serif字体系列名称。默认“sans-serif”。


setStandardFontFamily(String font)


设置标准字体系列名称。默认“sans-serif”。


setSupportMultipleWindows(boolean support)


设置WebView是否支持多个窗口。


setSupportZoom(boolean support)


设置WebView是否支持使用其屏幕缩放控件和手势进行缩放。


setTextZoom(int textZoom)


以百分比设置页面的文本缩放。默认100。


setUseWideViewPort(boolean use)


设置WebView是应该启用对“viewport”HTML元标记的支持还是应该使用宽视口。


setUserAgentString(String ua)


设置WebView的用户代理字符串。


WebChromeClient


常用方法


onCloseWindow(WebView window)


通知主应用程序关闭给定的WebView并在必要时将其从视图系统中删除。


onConsoleMessage(ConsoleMessage consoleMessage)


向主应用程序报告JavaScript控制台消息。


onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg)


请求主应用程序创建一个新窗口。


onGeolocationPermissionsHidePrompt()


通知主应用程序,用先前对onGeolocationPermissionsShowPrompt()的调用进行的地理位置权限请求已被取消。


onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback)


通知主应用程序指定来源的Web内容正在尝试使用Geolocation API,但目前没有为该来源设置权限状态。


onHideCustomView()


通知主应用程序当前页面已退出全屏模式。


onJsAlert(WebView view, String url, String message, JsResult result)


告诉客户端显示一个JavaScript警告对话框。


onJsBeforeUnload(WebView view, String url, String message, JsResult result)


告诉客户端显示一个对话框,以确认离开当前页面的导航。


onJsConfirm(WebView view, String url, String message, JsResult result)


告诉客户端向用户显示一个确认对话框。


onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result)


告诉客户端向用户显示一个提示对话框。


onPermissionRequest(PermissionRequest request)


通知主应用程序Web内容正在请求访问指定资源的权限,当前权限未授予或拒绝该权限。


onPermissionRequestCanceled(PermissionRequest request)


通知主应用程序已经取消了给定的权限请求。


onProgressChanged(WebView view, int newProgress)


告诉主应用程序加载页面的当前进度。


onReceivedIcon(WebView view, Bitmap icon)


通知主应用程序当前页面的新图标。


onReceivedTitle(WebView view, String title)


通知主应用程序文档标题的更改。


onReceivedTouchIconUrl(WebView view, String url, boolean precomposed)


onRequestFocus(WebView view)


请求此WebView的显示和焦点。


onShowCustomView(View view, WebChromeClient.CustomViewCallback callback)


通知主应用程序当前页面已进入全屏模式。


onShowFileChooser( WebView webView, ValueCallback< Uri[] > filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)

告诉客户显示文件选择器。


WebViewClient


doUpdateVisitedHistory(WebView view, String url, boolean isReload)


通知主应用程序更新其访问的链接数据库。


onFormResubmission(WebView view, Message dontResend, Message resend)


作为主机应用程序,如果浏览器应该重新发送数据,因为请求的页面是POST的结果。


onLoadResource(WebView view, String url)


通知主应用程序WebView将加载由给定url指定的资源。


onPageCommitVisible(WebView view, String url)


通知主应用程序从上一页导航留下的WebView内容将不再绘制。


onPageFinished(WebView view, String url)


页面加载完成。


onPageStarted(WebView view, String url, Bitmap favicon)


页面开始加载。


onReceivedClientCertRequest(WebView view, ClientCertRequest request)


通知应用程序处理SSL客户端证书请求。


onReceivedError(WebView view, WebResourceRequest request, WebResourceError error)


报告Web资源加载错误。


onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm)


WebView收到HTTP认证请求。


onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse)


应用程序在加载资源时从服务器收到HTTP错误。


onReceivedLoginRequest(WebView view, String realm, String account, String args)


应用程序已处理自动登录用户的请求。


onReceivedSslError(WebView view, SslErrorHandler handler, SslError error)


应用程序加载资源时发生SSL错误。


onRenderProcessGone(WebView view, RenderProcessGoneDetail detail)


给定的WebView的渲染进程已退出。


onSafeBrowsingHit(WebView view, WebResourceRequest request, int threatType, SafeBrowsingResponse callback)


通知主应用程序加载URL已被安全浏览标记。


onScaleChanged(WebView view, float oldScale, float newScale)


通知主应用程序应用于WebView的比例已更改。


onUnhandledKeyEvent(WebView view, KeyEvent event)


通知主应用程序未由WebView处理的事件。


shouldInterceptRequest(WebView view, WebResourceRequest request)


通知请求资源的应用程序并允许应用程序返回数据。


shouldOverrideKeyEvent(WebView view, KeyEvent event)


给应用程序一个同步处理关键事件的机会。


shouldOverrideUrlLoading(WebView view, WebResourceRequest request)


当一个新的URL即将被加载到当前的WebView中时,应用程序有机会接管控制权。