WebView设置WebViewClient的方法
作者:Vander丶 发布时间:2023-09-01 05:34:58
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.
如有疑问请留言或到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/l540675759/article/details/54709687


猜你喜欢
- SpringMVC 中,文件的上传,是通过 MultipartResolver 实现的。 所以,如果要实现文件的上传,只要在 spring-
- ProgressBar进度条当一个应用在后台执行时,前台界面不会有任何信息,这时,用户根本不知道程序是否在执行以及执行的进度等, 因此需要使
- 本文实例讲述了C#使用GZipStream解压缩数据文件的方法。分享给大家供大家参考。具体分析如下:GZipStream用于从一个流读取数据
- 本文实例讲述了Android开发中的文件操作工具类FileUtil。分享给大家供大家参考,具体如下:package com.ymerp.an
- 一:百度高德官方网站,然后去创建应用网址:http://lbs.amap.com/1.找到控制台创建一个应用2.添加key名称,注意命名规范
- 使用版本:spring-boot: 2.1.6.RELEASEsping: 5.1.8.RELEASEjava: openjdk 11.0.
- 相对布局要比前面讲的线性布局和表格布局要灵活一些,所以平常用得也是比较多的。相对布局控件的位置是与其周围控件的位置相关的,从名字可以看出来,
- 数据适配DataAdapter 对象是DataSet 和数据源之间的桥梁,可以建立并初始化数据表(即DataTable),对数据源执行SQL
- 本文实例讲述了JavaMail实现发送超文本(html)格式邮件的方法。分享给大家供大家参考。具体如下:附件以超文本形式,很常用,与普通的邮
- jsoup是一个非常好用的html解析工具。使用时需要下载相应的jar包。下面就是我使用jsoup解析html的表格的java源
- 本文实例讲述了C#实现XSL转换的方法。分享给大家供大家参考,具体如下:xsl 可方便的将一种格式的xml,转换成另一种格式的xml,参考下
- 前沿页面通用Loading组件是一个App必不可少的基础功能,之前只开发过Android原生的页面Loading,这次就按原生的逻辑再开发一
- 图库在播放幻灯片时,按power键灭屏,然后再亮屏,会发现幻灯片继续在播放,没有显示keyguard。如何在亮屏后显示解锁界面。 修改方法是
- 我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来解决这个问题,下面我将详
- 本文以实例形式讲述了C#解析JSON的方法,C#封装了对XML和JSON解析的类库,使用相当方便!具体用法如下:1.主要用到的类:主要用到了
- 做为面试常考的问题之一,每次都答的模模糊糊,有必要了解一下,首先来看一下hashmap的put方法的源码public V put(K key
- 1. 读取json file1.1 Json dependency<dependency> &nbs
- java抠图片文字或签名运行原理第一步 遍历像素点BufferedImage image = ImageIO.read(new File(i
- 面试题1:Bean 的加载过程是怎样的?我们知道, Spring 的工作流主要包括以下两个环节:解析,读 xml 配置,扫描类文件,从配置或
- 基本思想:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后