欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

WebView设置WebViewClient的方法

程序员文章站 2023-12-14 22:40:10
webview设置webviewclient的方法 shouldoverrideurlloading: 在web页面里单击链接的时候,会自动调用android自带的浏览...

webview设置webviewclient的方法

shouldoverrideurlloading:

在web页面里单击链接的时候,会自动调用android自带的浏览器来打开链接,需要通过该方法在本页面打开;

 @override
  public boolean shouldoverrideurlloading(webview view, string url) {
  view.loadurl(url);
  return true;
  }
onloadresource:加载资源时响应
onpagestart:在加载页面时响应
onpagefinish:在加载页面结束时响应
onreceiveerror:在加载出错时响应
onreceivedhttpauthrequest:

公共方法

doupdatevisitedhistory(webview view,string url,boolean isreload)

通知主机应用程序更新其访问数据库的链接。(貌似可以理解成webview内容变化后,数据库储存的历史记录也变化了,需要更新)

onformresubmission(webview view,message dontresend,message resend)

在应用程序中,如果浏览器需要重新加载页面数据,这个页面必须是属于post请求,默认情况下,是不会发送重新加载数据.

onloadresource(webview view,string url)

当webview加载特定的资源时,会通知webview所请求的url.

onpagecommitvisible(webview view,string url)

(1)通知应用程序,webview之前页面遗留的内容,将不会在加载和绘制.

(2)这个回调被使用在webview内容安全的回收,确保不会显示陈旧的内容.

(3)它能够在最早被调用,以此来保证ondraw(canvas)在以前的界面不会绘制任何内容,接下来需要绘制的内容background color或者需要加载的新内容.

(4)这个方法会在http的body已经加载,已经反映在dom上,并且将会在其可见的时候绘制.这个回调发生在文档(document)加载的早期,因此它的资源(css,和图像)可能是拿不到的.

(5)如果需要更细粒度的视图更新,具体到元素,<标签/>,需要了解postvisualstatecallback(long, webview.visualstatecallback).

(6)请注意这上边的所有条件也支持postvisualstatecallback(long ,webview.visualstatecallback)   

void onpagefinished(webview view,string url)

通知应用程序页面已经完成加载,只有主框架才能调用此方法,当onpagefinish()被调用时,呈现图片可能还没有被更新.新照片的通知更新,请使用onnewpicture(webview,picture)

onpagestarted(webview view,string url,bitmap favicon)

通知应用程序已经开始进行页面加载,这个方法,在每个主框架加载一个页面或者一个内置页框都会被调用.这也意味着onpagestarted将不会发生在嵌入式的框架内的内容变化,就像单击链接目标.

onreceivedclientcertrequest(webview view,clientcertre)

通知应用程序来处理一个ssl客户证书请求,应用程序负责提示用户输入钥匙.

有三种处理方式:

进行proceed()

取消cancel()

无视ignore()

webview将会储存在响应内存(特指app还存活)的进行(proceed)和取消(cancel)的操作,并且onreceivedclientcertrequest()在遇到相似的host和port,不会对用户进行通知,但是无视(ignore)状态在webview中不会储存,下次还会继续提示.

注意:

(1)谷歌的chromium(引擎)可能会缓存这些响应,所以当前情况下,忽略可能是影响最小的一个选择.

(2)如果在ui线程使用,这个连接可能被暂停.

(3)在大多数情况,这个应用程序项目,应该实现keychainaliascallback这个接口,并且将这个接口传递给chooseprivatekeyalias(activity,keychainaliascallback,string[],principal[],uri,string)并且给user(用户)选择一个别名来开始这个活动.

(4)这个活动的钥匙串将通过接口回调的方式实现.

(5)下一个app应该通过创建一个异步任务通过getprivatekey(context,string)方法来获得这个(key)钥匙.

(6)这个方法在aosp浏览器的默认行为是取消(cancel),并且不返回客户端证书.

在api 23被遗弃.

onreceivederror
(
webview view,
int errorcode,
string descrption,
string failingurl
)

向应用程序报告错误,这个错误都是不可恢复的(这些资源不可以被使用).errorcode参数对应一个error_*常量.

onreceiver(webview view,
webresourcerequest request,
webresourceerror error)

向应用程序报告web资源加载错误.这些错误通常会显示无法连接到服务器,回调时注意与弃用版本,新版本将针对任何资源(iframe,picture),不仅针对主页面,因此,建议在这个回调上执行加载资源错误的 通用的处理情况.

onreceivedhttpauthrequest(webview view.
httpauthhandler handler,
string host,
string realm)

通知应用程序接收webview上面的http身份验证请求.应用程序可以使用提供的httpauthhandler来设置对webview上面请求的回应.默认的行为是取消请求.

onreceivedhttperror(webview view,
webresourcerequest request,
webresourceresponse errorresponse)

通知app在从服务器端接收到http错误,并且==http的错误状态码>=400==,这个回调将对任何资源(iframe,picture等)不仅对主页面.因为,建议在这个回调上面执行最普遍的处理,处理通用事件.

==注意:服务器响应的内容可能在errorresponse中找不到.==

onreceivedloginrequest(webview view,
string realm
string account
string args)

通知应用程序自动用户登录已经被处理.

onreceiversslerror(webview view,
sslerrorhandler handler
sslerror error)

通知应用程序加载资源时发生ssl错误,主机应用程序必须调用handler.cancel()或者handler.proceed().注意,这个决定可能被保留应对未来的ssl错误,默认的行为是取消(cancel)加载.

onscalechange(webview view,
float oldscale,
float newscale)

通知app对于webview的比例大小已经发生变化.

onunhandledkeyevent(webview view,keyevent event)

通知应用这个事件没有在webview声明,除了系统事件,webview总是消费普通的事件,或者设置shouldoverridekeyevent方法返回值为true.

这个事件的发出,属于异步的发出,它给应用程序机会来处理这些不能处理的关键性事件.

webresourceresponse shouldinterceptrequest(
webview view,
webresourcerequest request)

通知应用程序一个资源请求,并且允许应用程序返回数据.如果返回值为null,这个webview将会继续加载普通的资源请求.否则,返回响应的数据将会被使用.

注意:这个方法将在非主线程调用.所以客户端在访问私有数据或者ui视图时需要谨慎行事.

boolean shouldoverridekeyevent(webview view
,keyevent event) 

赋予应用程序能够处理异步事件的机会.

eg:菜单的快捷键需要先被过滤.

如果方法返回true,webview将不会处理该事件,如果返回false,那么webview将会一直处理该事件,所以没有超级链接也能看到该事件.

这个默认行为是返回false.

shouldoverrideurlloading(webview view
webresourcerequest request)

使主机应用程序能够控制,当一个新的url加载到当前的webview.

如果没有提供webviewclient,默认情况下webview会询问activity manager 去选择来适当的处理当前的url,如果webviewclient被提供,返回true,意味着主机程序来处理url,而返回false意味着当前webview处理url.

如有疑问请留言或到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

上一篇:

下一篇: