收藏本站
博为峰Android开发培训Banner
您所在的位置:博为峰教育首页 > 资料精选 > 学习资料 > 【学习资料】Android学习之WebView拦截替换网络请求数据

【学习资料】Android学习之WebView拦截替换网络请求数据

   发布时间:2014年11月16日 08:55分    来源:博为峰教育网采编    关键词:Android,Webview    | 上一篇 | 下一篇 |


Android学习之WebView拦截替换网络请求数据01

 

     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有两种重载。

  1. public Web Resource Response should Intercept Request (Web View view, String url) 从API 11开始引入,API 21弃用
  2. public Web Resource Response should Intercept Request (Web View view, Web Resource Request request) 从API 21开始引入

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

     示例代码

Android学习之WebView拦截替换网络请求数据02

     博为峰教育提醒大家其中Web Resource Response需要设定三个属性,MIME类型,数据编码,数据(Input Stream流形式)。

     在Android学习是一个很长远的过程,博为峰教育官网上也为大家提供的齐全的Android课程资料,生命不息,学习不止。