public class WebViewClient
extends Object
java.lang.Object | |
↳ | android.webkit.WebViewClient |
Constants |
|
---|---|
int |
ERROR_AUTHENTICATION 用户认证在服务器上失败 |
int |
ERROR_BAD_URL 格式错误的网址 |
int |
ERROR_CONNECT 无法连接到服务器 |
int |
ERROR_FAILED_SSL_HANDSHAKE 无法执行SSL握手 |
int |
ERROR_FILE 通用文件错误 |
int |
ERROR_FILE_NOT_FOUND 文件未找到 |
int |
ERROR_HOST_LOOKUP 服务器或代理主机名查找失败 |
int |
ERROR_IO 无法读取或写入服务器 |
int |
ERROR_PROXY_AUTHENTICATION 代理上的用户身份验证失败 |
int |
ERROR_REDIRECT_LOOP 太多的重定向 |
int |
ERROR_TIMEOUT 连接超时 |
int |
ERROR_TOO_MANY_REQUESTS 在此负载期间请求过多 |
int |
ERROR_UNKNOWN 一般错误 |
int |
ERROR_UNSUPPORTED_AUTH_SCHEME 不支持的认证方案(不是基本或摘要) |
int |
ERROR_UNSUPPORTED_SCHEME 不支持的URI方案 |
Public constructors |
|
---|---|
WebViewClient() |
Public methods |
|
---|---|
void |
doUpdateVisitedHistory(WebView view, String url, boolean isReload) 通知主机应用程序更新其访问的链接数据库。 |
void |
onFormResubmission(WebView view, Message dontResend, Message resend) 作为主机应用程序,如果浏览器应该重新发送数据,因为请求的页面是POST的结果。 |
void |
onLoadResource(WebView view, String url) 通知主机应用程序WebView将加载由给定url指定的资源。 |
void |
onPageCommitVisible(WebView view, String url) |
void |
onPageFinished(WebView view, String url) 通知主机应用程序页面已完成加载。 |
void |
onPageStarted(WebView view, String url, Bitmap favicon) 通知主机应用程序一个页面已经开始加载。 |
void |
onReceivedClientCertRequest(WebView view, ClientCertRequest request) 通知主机应用程序处理SSL客户端证书请求。 |
void |
onReceivedError(WebView view, int errorCode, String description, String failingUrl) 此方法在API级别23中已弃用。请改为使用 |
void |
onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) 向主机应用程序报告Web资源加载错误。 |
void |
onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) 通知主机应用程序WebView收到HTTP认证请求。 |
void |
onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) 通知主机应用程序在加载资源时从服务器收到HTTP错误。 |
void |
onReceivedLoginRequest(WebView view, String realm, String account, String args) 通知主机应用程序已处理自动登录用户的请求。 |
void |
onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) 通知主机应用程序加载资源时发生SSL错误。 |
void |
onScaleChanged(WebView view, float oldScale, float newScale) 通知主机应用程序应用于WebView的比例已更改。 |
void |
onTooManyRedirects(WebView view, Message cancelMsg, Message continueMsg) 此方法在API级别8中已弃用。此方法不再被调用。 当WebView遇到重定向循环时,它将取消加载。 |
void |
onUnhandledKeyEvent(WebView view, KeyEvent event) 通知主机应用程序未由WebView处理密钥。 |
WebResourceResponse |
shouldInterceptRequest(WebView view, WebResourceRequest request) 通知资源请求的主机应用程序并允许应用程序返回数据。 |
WebResourceResponse |
shouldInterceptRequest(WebView view, String url) 此方法在API级别21中已弃用。请改为使用 |
boolean |
shouldOverrideKeyEvent(WebView view, KeyEvent event) 让主机应用程序有机会同步处理关键事件。 |
boolean |
shouldOverrideUrlLoading(WebView view, WebResourceRequest request) 当一个新的URL即将被加载到当前的WebView中时,主机应用程序有机会接管控制权。 |
boolean |
shouldOverrideUrlLoading(WebView view, String url) 此方法在API级别24中已弃用。请改为使用 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
int ERROR_FAILED_SSL_HANDSHAKE
无法执行SSL握手
常量值:-11(0xfffffff5)
int ERROR_PROXY_AUTHENTICATION
代理上的用户身份验证失败
常量值:-5(0xfffffffb)
int ERROR_TOO_MANY_REQUESTS
在此负载期间请求过多
常量值:-15(0xfffffff1)
int ERROR_UNSUPPORTED_AUTH_SCHEME
不支持的认证方案(不是基本或摘要)
常量值:-3(0xfffffffd)
int ERROR_UNSUPPORTED_SCHEME
不支持的URI方案
常量值:-10(0xfffffff6)
void doUpdateVisitedHistory (WebView view, String url, boolean isReload)
通知主机应用程序更新其访问的链接数据库。
Parameters | |
---|---|
view |
WebView : The WebView that is initiating the callback. |
url |
String : The url being visited. |
isReload |
boolean : True if this url is being reloaded. |
void onFormResubmission (WebView view, Message dontResend, Message resend)
作为主机应用程序,如果浏览器应该重新发送数据,因为请求的页面是POST的结果。 默认是不重新发送数据。
Parameters | |
---|---|
view |
WebView : The WebView that is initiating the callback. |
dontResend |
Message : The message to send if the browser should not resend |
resend |
Message : The message to send if the browser should resend data |
void onLoadResource (WebView view, String url)
通知主机应用程序WebView将加载由给定url指定的资源。
Parameters | |
---|---|
view |
WebView : The WebView that is initiating the callback. |
url |
String : The url of the resource the WebView will load. |
void onPageCommitVisible (WebView view, String url)
通知主机应用程序 WebView
从上一页导航中 WebView
内容将不再绘制。
此回调可用于确定可再生WebView
可见的安全点,以确保没有显示过时的内容。 它被称为在可以保证onDraw(Canvas)
将不再从以前的导航中提取任何内容的最早时刻。 下一个抽奖将显示background color
的WebView
,或新加载的页面的一些内容。
当HTTP响应的主体已经开始加载时,这个方法被调用,并且在DOM中被反映,并且在随后的绘制中可见。 此回调在文档加载过程的早期发生,因此您应该期望链接的资源(例如,css和图像)可能不可用。
有关视觉状态更新的更细粒度的通知,请参阅 postVisualStateCallback(long, WebView.VisualStateCallback)
。
请注意,适用于 postVisualStateCallback(long, WebView.VisualStateCallback)
所有条件和建议也适用于此API。
此回调仅用于主框架导航。
Parameters | |
---|---|
view |
WebView : The WebView for which the navigation occurred. |
url |
String : The URL corresponding to the page navigation that triggered this callback. |
void onPageFinished (WebView view, String url)
通知主机应用程序页面已完成加载。 这种方法仅适用于主框架。 调用onPageFinished()时,渲染图片可能尚未更新。 要获取新图片的通知,请使用onNewPicture(WebView, Picture)
。
Parameters | |
---|---|
view |
WebView : The WebView that is initiating the callback. |
url |
String : The url of the page. |
void onPageStarted (WebView view, String url, Bitmap favicon)
通知主机应用程序一个页面已经开始加载。 这种方法对于每个主框架负载都被调用一次,所以带有iframe或框架集的页面将为主框架调用onPageStarted一次。 这也意味着,当嵌入帧的内容发生变化时,onPageStarted不会被调用,即点击一个目标是iframe的链接,它也不会被称为片段导航(导航到#fragment_id)。
Parameters | |
---|---|
view |
WebView : The WebView that is initiating the callback. |
url |
String : The url to be loaded. |
favicon |
Bitmap : The favicon for this page if it already exists in the database. |
void onReceivedClientCertRequest (WebView view, ClientCertRequest request)
通知主机应用程序处理SSL客户端证书请求。 宿主应用程序负责根据需要显示UI并提供密钥。 有三种响应方式:proceed(),cancel()或ignore()。 如果调用proceed()或cancel()并且不再为同一个主机和端口对调用onReceivedClientCertRequest(),则Webview会将响应存储在内存中(对于应用程序的整个生命周期)。 如果调用ignore(),Webview不存储响应。 请注意,铬网络堆栈中的多个图层可能会缓存响应,因此忽略行为只是最好的情况。 此方法在UI线程上调用。 在回调期间,连接被暂停。 对于大多数使用情况,应用程序应该实现KeyChainAliasCallback
接口并将其传递给choosePrivateKeyAlias(Activity, KeyChainAliasCallback, String[], Principal[], Uri, String)
以启动用户选择正确别名的活动。 钥匙串活动将通过实现的接口中的回调方法提供别名。 接下来,应用程序应该创建一个异步任务来调用getPrivateKey(Context, String)
来接收密钥。 客户端证书的示例实现可以在AOSP Browser处看到 。默认行为是取消,不返回客户端证书。
Parameters | |
---|---|
view |
WebView : The WebView that is initiating the callback |
request |
ClientCertRequest : An instance of a ClientCertRequest |
void onReceivedError (WebView view, int errorCode, String description, String failingUrl)
此方法在API级别23中已弃用。
改为使用onReceivedError(WebView, WebResourceRequest, WebResourceError)
。
向主机应用程序报告错误。 这些错误是不可恢复的(即主资源不可用)。 errorCode参数对应于其中一个ERROR_ *常量。
Parameters | |
---|---|
view |
WebView : The WebView that is initiating the callback. |
errorCode |
int : The error code corresponding to an ERROR_* value. |
description |
String : A String describing the error. |
failingUrl |
String : The url that failed to load. |
void onReceivedError (WebView view, WebResourceRequest request, WebResourceError error)
向主机应用程序报告Web资源加载错误。 这些错误通常表明无法连接到服务器。 请注意,与回调的弃用版本不同,新版本将针对任何资源(iframe,图像等)而被调用,而不仅仅是主页面。 因此,建议在此回调中执行最低限度的工作。
Parameters | |
---|---|
view |
WebView : The WebView that is initiating the callback. |
request |
WebResourceRequest : The originating request. |
error |
WebResourceError : Information about the error occured. |
void onReceivedHttpAuthRequest (WebView view, HttpAuthHandler handler, String host, String realm)
通知主机应用程序WebView收到HTTP认证请求。 主机应用程序可以使用提供的HttpAuthHandler
来设置WebView对请求的响应。 默认行为是取消请求。
Parameters | |
---|---|
view |
WebView : the WebView that is initiating the callback |
handler |
HttpAuthHandler : the HttpAuthHandler used to set the WebView's response |
host |
String : the host requiring authentication |
realm |
String : the realm for which authentication is required |
void onReceivedHttpError (WebView view, WebResourceRequest request, WebResourceResponse errorResponse)
通知主机应用程序在加载资源时从服务器收到HTTP错误。 HTTP错误的状态码大于等于400.这个回调将被调用,用于任何资源(iframe,图像等),而不仅仅是主页面。 因此,建议在此回调中执行最低限度的工作。 请注意,服务器响应的内容可能不会在errorResponse参数中提供。
Parameters | |
---|---|
view |
WebView : The WebView that is initiating the callback. |
request |
WebResourceRequest : The originating request. |
errorResponse |
WebResourceResponse : Information about the error occured. |
void onReceivedLoginRequest (WebView view, String realm, String account, String args)
通知主机应用程序已处理自动登录用户的请求。
Parameters | |
---|---|
view |
WebView : The WebView requesting the login. |
realm |
String : The account realm used to look up accounts. |
account |
String : An optional account. If not null, the account should be checked against accounts on the device. If it is a valid account, it should be used to log in the user. |
args |
String : Authenticator specific arguments used to log in the user. |
void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error)
通知主机应用程序加载资源时发生SSL错误。 主机应用程序必须调用handler.cancel()或handler.proceed()。 请注意,该决定可能会保留以用于响应未来的SSL错误。 默认行为是取消加载。
Parameters | |
---|---|
view |
WebView : The WebView that is initiating the callback. |
handler |
SslErrorHandler : An SslErrorHandler object that will handle the user's response. |
error |
SslError : The SSL error object. |
void onScaleChanged (WebView view, float oldScale, float newScale)
通知主机应用程序应用于WebView的比例已更改。
Parameters | |
---|---|
view |
WebView : The WebView that is initiating the callback. |
oldScale |
float : The old scale factor |
newScale |
float : The new scale factor |
void onTooManyRedirects (WebView view, Message cancelMsg, Message continueMsg)
此方法在API级别8中已被弃用。
此方法不再被调用。 当WebView遇到重定向循环时,它将取消加载。
通知主机应用程序有过多的HTTP重定向。 作为主机应用程序,如果它想继续尝试加载资源。 默认行为是发送取消消息。
Parameters | |
---|---|
view |
WebView : The WebView that is initiating the callback. |
cancelMsg |
Message : The message to send if the host wants to cancel |
continueMsg |
Message : The message to send if the host wants to continue |
void onUnhandledKeyEvent (WebView view, KeyEvent event)
通知主机应用程序未由WebView处理密钥。 除系统键之外,WebView将始终使用正常流程中的键或者shouldOverrideKeyEvent返回true。 这是从密钥分派的地方异步调用的。 它使主机应用程序有机会处理未处理的关键事件。
Parameters | |
---|---|
view |
WebView : The WebView that is initiating the callback. |
event |
KeyEvent : The key event. |
WebResourceResponse shouldInterceptRequest (WebView view, WebResourceRequest request)
通知资源请求的主机应用程序并允许应用程序返回数据。 如果返回值为空,则WebView将像往常一样继续加载资源。 否则,将使用返回响应和数据。 注意:此方法在UI线程以外的线程上调用,因此客户端在访问私人数据或视图系统时应谨慎行事。
Parameters | |
---|---|
view |
WebView : The WebView that is requesting the resource. |
request |
WebResourceRequest : Object containing the details of the request. |
Returns | |
---|---|
WebResourceResponse |
A WebResourceResponse containing the response information or null if the WebView should load the resource itself. |
WebResourceResponse shouldInterceptRequest (WebView view, String url)
此方法在API级别21中已弃用。
改为使用shouldInterceptRequest(WebView, WebResourceRequest)
。
通知资源请求的主机应用程序并允许应用程序返回数据。 如果返回值为空,则WebView将像往常一样继续加载资源。 否则,将使用返回响应和数据。 注意:此方法在UI线程以外的线程上调用,因此客户端在访问私人数据或视图系统时应谨慎行事。
Parameters | |
---|---|
view |
WebView : The WebView that is requesting the resource. |
url |
String : The raw url of the resource. |
Returns | |
---|---|
WebResourceResponse |
A WebResourceResponse containing the response information or null if the WebView should load the resource itself. |
boolean shouldOverrideKeyEvent (WebView view, KeyEvent event)
让主机应用程序有机会同步处理关键事件。 例如菜单快捷键事件需要以这种方式进行过滤。 如果返回true,WebView将不会处理关键事件。 如果返回false,WebView将始终处理关键事件,因此视图链中的所有超级用户都不会看到关键事件。 默认行为返回false。
Parameters | |
---|---|
view |
WebView : The WebView that is initiating the callback. |
event |
KeyEvent : The key event. |
Returns | |
---|---|
boolean |
True if the host application wants to handle the key event itself, otherwise return false |
boolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request)
当一个新的URL即将被加载到当前的WebView中时,主机应用程序有机会接管控制权。 如果未提供WebViewClient,则默认情况下,WebView将要求活动管理器为URL选择适当的处理程序。 如果提供了WebViewClient,则返回true表示主机应用程序处理url,而返回false表示当前的WebView处理该url。
笔记:
loadUrl(String)
with the request's url from inside the method and then return true, as this will make WebView to attempt loading a non-http url, and thus fail.Parameters | |
---|---|
view |
WebView : The WebView that is initiating the callback. |
request |
WebResourceRequest : Object containing the details of the request. |
Returns | |
---|---|
boolean |
True if the host application wants to leave the current WebView and handle the url itself, otherwise return false. |
boolean shouldOverrideUrlLoading (WebView view, String url)
此方法在API级别24中已弃用。
改为使用shouldOverrideUrlLoading(WebView, WebResourceRequest)
。
当一个新的URL即将被加载到当前的WebView中时,主机应用程序有机会接管控制权。 如果未提供WebViewClient,则默认情况下,WebView将要求活动管理器为URL选择适当的处理程序。 如果提供了WebViewClient,则返回true表示主机应用程序处理url,而返回false表示当前的WebView处理该url。 这种方法不会为使用POST“方法”的请求调用。
Parameters | |
---|---|
view |
WebView : The WebView that is initiating the callback. |
url |
String : The url to be loaded. |
Returns | |
---|---|
boolean |
True if the host application wants to leave the current WebView and handle the url itself, otherwise return false. |