WebView WebViewClient 拦截URL在华为6.0与其他版本上的兼容区别

前提: 最近在项目中碰到 WebViewClient 的 shouldOverrideUrlLoading 方法,在部分机型中失效情况。(项目中使用的是 WebView封装框架–AgentWeb)

问题:调用 WebViewClient 的 shouldOverrideUrlLoading(WebView view, WebResourceRequest request) 方法时,在 安卓5.1(魅族),安卓7.0(魅族/荣耀),安卓8.1(荣耀) 上都可以成功拦截,但在 安卓6.0(华为) 上却无法拦截,直接不会调用该方法。

解决: shouldOverrideUrlLoading(WebView view, WebResourceRequest request) 该方法为新提供的方法,还有一个过时的方法shouldOverrideUrlLoading(WebView view, String url) ,同时调用这两个方法时,可以实现上述机型与华为6.0系统的兼容。

拓展:

WebViewClient 方法列举

/** 
 * 在开始加载网页时会回调 
 */  
public void onPageStarted(WebView view, String url, Bitmap favicon)   
/** 
 * 在结束加载网页时会回调 
 */  
public void onPageFinished(WebView view, String url) 
/** 
 * 拦截 url 跳转,在里边添加点击链接跳转或者操作 
 */  
public boolean shouldOverrideUrlLoading(WebView view,WebResourceRequest request) 
/** 
 * 加载错误的时候会回调,在其中可做错误处理,比如再请求加载一次,或者提示404的错误页面 
 */  
public void onReceivedError(WebView view, int errorCode,String description, String failingUrl) 
/** 
 * 当接收到https错误时,会回调此函数,在其中可以做错误处理 
 */  
public void onReceivedSslError(WebView view, SslErrorHandler handler,SslError error)  
/** 
 * 在每一次请求资源时,都会通过这个函数来回调 
 */  
public WebResourceResponse shouldInterceptRequest(WebView view,  
        String url) {  
    return null;  
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值