【学习资料】Android学习之WebView拦截替换网络请求数据
发布时间:2014年11月16日 08:55分 来源:博为峰教育网采编 关键词:Android,Webview | 上一篇 | 下一篇 |
Android中处理网页时我们必然用到WebView,这里我们有这样一个需求,我们想让WebView在处理网络请求的时候将某些请求拦截替换成某些特殊的资源。具体一点儿说,在WebView加载 http://m.sogou.com 时,会加载一个logo图片,我们的需求就是将这个logo图片换成另一张图片。
Should Intercept Request
好在Android中的Web View比较强大,从API 11(Android 3.0)开始, should Intercept Request被引入就是为了解决这一类的问题。
Should Intercept Request这个回调可以通知主程序Web View处理的资源(css,js,image等)请求,并允许主程序进行处理后返回数据。如果主程序返回的数据为null,WebView会自行请求网络加载资源,否则使用主程序提供的数据。注意这个回调发生在非UI线程中,所以进行UI系统相关的操作是不可以的。
Should Intercept Request有两种重载。
- public Web Resource Response should Intercept Request (Web View view, String url) 从API 11开始引入,API 21弃用
- public Web Resource Response should Intercept Request (Web View view, Web Resource Request request) 从API 21开始引入
本次例子暂时使用第一种,即shouldInterceptRequest (WebView view, String url)。
示例代码

博为峰教育提醒大家其中Web Resource Response需要设定三个属性,MIME类型,数据编码,数据(Input Stream流形式)。
在Android学习是一个很长远的过程,博为峰教育官网上也为大家提供的齐全的Android课程资料,生命不息,学习不止。