那么简短的答案是它的工作原理与shouldOverrideUrlLoading(WebView视图,String url)非常相似,如

WebView tutorial所示。

要开始使用,请参阅下面的代码。您只需覆盖WebViewClient的shouldInterceptRequest(WebView视图,String url)方法即可。显然,你不必在线,但是为了紧凑,这就是我所做的:

WebView webview = (WebView) findViewById(R.id.webview);

webview.setWebViewClient(new WebViewClient() {

@Override

public WebResourceResponse shouldInterceptRequest (final WebView view, String url) {

if (url.contains(".css")) {

return getCssWebResourceResponseFromAsset();

} else {

return super.shouldInterceptRequest(view, url);

}

}

/**

* Return WebResourceResponse with CSS markup from a String.

*/

@SuppressWarnings("deprecation")

private WebResourceResponse getCssWebResourceResponseFromString() {

return getUtf8EncodedCssWebResourceResponse(new StringBufferInputStream("body { background-color: #F781F3; }"));

}

/**

* Return WebResourceResponse with CSS markup from an asset (e.g. "assets/style.css").

*/

private WebResourceResponse getCssWebResourceResponseFromAsset() {

try {

return getUtf8EncodedCssWebResourceResponse(getAssets().open("style.css"));

} catch (IOException e) {

return null;

}

}

/**

* Return WebResourceResponse with CSS markup from a raw resource (e.g. "raw/style.css").

*/

private WebResourceResponse getCssWebResourceResponseFromRawResource() {

return getUtf8EncodedCssWebResourceResponse(getResources().openRawResource(R.raw.style));

}

private WebResourceResponse getUtf8EncodedCssWebResourceResponse(InputStream data) {

return new WebResourceResponse("text/css", "UTF-8", data);

}

});

webview.loadUrl("http://stackoverflow.com");

捕获加载的css文件,并返回自己的WebResourceResponse,其中包含要加载的数据。

请注意,此方法需要API级别11。

如果您想为Android 2.x做类似的操作,可能需要尝试使用前面提到的shouldOverrideUrlLoading(WebView视图,String url)来避免加载页面,手动抓取,将您自己的css文件的引用替换为,然后在WebView上调用loadData(String data,String mimeType,String encoding)(或loadDataWithBaseURL(String baseUrl,String data,String mimeType,String encoding,String historyUrl)),并将其作为一个字符串传递给操作的html内容。

之前:

后:

android webview 例子,android – webview shouldinterceptrequest示例相关推荐

  1. android 开关按钮例子,Android自学笔记之ToggleButton(开关按钮)的功能、特殊属性、用法...

    1.ToggleButton属性: 1>有两种状态:选中和未选中状态并需要为不同的状态设置不同的显示文本 2>android:checked="true" 3>a ...

  2. android api 设置,Android API中文文档EditText

    Android API中文文档EditText是本文要介绍的内容,主要是来了解并学习Android API文档的帮助,具体关于Android API的内容的详解来看本文. 一.Android API中 ...

  3. Android开发:关于WebView

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liangruijun.blog.51cto.com/3061169/647456 ...

  4. android点赞webview页面,Android WebView

    一.简介 WebView是Android系统中的原生控件,其主要功能与前端页面进行响应交互,快捷省时地实现如期的功能,相当于增强版的内置浏览器. 使用时需要在配置文件里设置网络权限,定义布局大小和样式 ...

  5. WebView的使用之Android与JS通过WebView互调方法

    WebView的使用之Android与JS通过WebView互调方法 一.概述:  Android与JS通过WebView实现交互,实际上是: Android调用JS的代码: JS调用Android的 ...

  6. Android安全开发之WebView中的地雷

    0X01 About WebView 在Android开发中,经常会使用WebView来实现WEB页面的展示,在Activiry中启动自己的浏览器,或者简单的展示一些在线内容等.WebView功能强大 ...

  7. android项目中在webview中打开pdf

    android项目中在webview中打开pdf. 关于android打开pdf文件方法有多种,下面的文章有详细说明: Android 实现 PDF 文件阅读功能调研 Android 使用PDF.js ...

  8. android自带的webview有广告,android webview 拦截广告

    要想对Webview实现一些高级操作,需要使用WebViewClient,下面是关于Webview的几个常用回调函数: 1.public boolean shouldOverrideUrlLoadin ...

  9. 【Android】之【WebView】

    一.简介 WebView是一种控件,它基于webkit引擎,因此具备渲染Web页面的功能. 基于Webview的混合开发,就是在 Android os(安卓)/I os(苹果)原生APP里,通过Web ...

最新文章

  1. mysql 查看表结构,字段的基本信息(简单明了)。
  2. 最新行政区划编码数据
  3. MAC电脑使用vue-cli脚手架搭建vue项目;mac使用脚手架vue-cli搭建vue项目
  4. linux 文件重命名_如何在 Linux 上重命名一组文件 | Linux 中国
  5. Gitlab自动触发Jenkins构建项目
  6. 谈谈技术原则,技术学习方法,代码阅读及其他的(引用)
  7. docker web程序本地化_Docker 容器化部署 Python 应用
  8. iOS仿京东分类菜单之UICollectionView内容
  9. WinForm设置窗体默认控件焦点
  10. 阿里云服务器跟淘宝上租的服务器有什么区别?
  11. Windows 10 下使用 VMPlayer 16 新建 CentOS 7 64位 虚拟机
  12. FreePiano下载与使用
  13. IOI国家集训队1999-2020年论文集(附网盘免费下载链接)
  14. 学习:网络接口RJ45
  15. 产品 观察体会微信界面心得(一)
  16. 服务器c盘有个inetpub文件夹,inetpub是什么文件夹
  17. CFSSL: 证书管理工具:6:理解证书文件内容
  18. win7未能成功安装驱动服务器,win7找不到驱动程序提示“未能成功安装设备驱动程序”的解决方法...
  19. 企业税务负面信息综合查询
  20. 前端实现pdf转换成html,纯js实现HTML转pdf的简单实例(推荐)_温瞳_前端开发者

热门文章

  1. [笔记] 最大权闭合子图最大流最小割相关笔记
  2. XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Korea
  3. 《Java并发编程的艺术》笔记
  4. MySQL课堂练习 20162315
  5. 深入理解include预编译原理
  6. Linux strace命令 一
  7. [转载] 扩展Python之在Python中调用C编写的函数模块
  8. 记录一些关于操作数据库(本地和linux服务器)常用的命令
  9. PyQt5-QTextEdit控件使用
  10. 27_线程池_线程池实现原理