您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页WebView拦截替换URL请求

WebView拦截替换URL请求

来源:二三四教育网

shouldInterceptRequest
好在Android中的WebView比较强大,从API 11(Android 3.0)开始, shouldInterceptRequest被引入就是为了解决这一类的问题。

shouldInterceptRequest这个回调可以通知主程序WebView处理的资源(css,js,image等)请求,并允许主程序进行处理后返回数据。如果主程序返回的数据为null,WebView会自行请求网络加载资源,否则使用主程序提供的数据。注意这个回调发生在非UI线程中,所以进行UI系统相关的操作是不可以的。

shouldInterceptRequest有两种重载。
public WebResourceResponse shouldInterceptRequest (WebView view, String url) 从API 11开始引入,API 21弃用

public WebResourceResponse shouldInterceptRequest (WebView view, WebResourceRequest request) 从API 21开始引入

本次例子暂时使用第一种,即shouldInterceptRequest (WebView view, String url)。
示例代码

WebView webView = new WebView(this);
webView.setWebViewClient(new WebViewClient() { 
@Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { 
Log.i(LOGTAG, "shouldInterceptRequest url=" + url + ";threadInfo" + Thread.currentThread());

 WebResourceResponse response = null;
 if (url.contains("logo")) { 
try { 
    InputStream localCopy = getAssets().open("droidyue.png");
     response = new WebResourceResponse("image/png", "UTF-8",            localCopy); 
    } catch (IOException e) { 
    e.printStackTrace(); } 
 } return response; } });

其中WebResourceResponse需要设定三个属性,MIME类型,数据编码,数据(InputStream流形式)。

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务