首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 拦截WebView加载URL,控制其加载CSS、JS资源

https://blog.csdn.net/lyhhj/article/details/49517537 绪论 最近在项目中有了这样一个需求,我们都知道WebView加载网页可以缓存,但是web...端想让客服端根据需求来缓存网页,也就是说web端在设置了http响应头,我根据这个头来拦截WebView加载网页,去执行网络加载还是本地缓存加载。...这个需求之前一直没听说过,在网上搜了一下,发现有拦截WebView加载网页这个方法,研究了一下,最终实现了,今天小编分享给大家这个开发经验: WebView缓存机制 1.缓存模式 AndroidWebView...存到数据中?好像都不行,无法对应关系啊。...,更稳定,屏蔽安卓不同版本的webview的兼容性问题 生命就在于折腾,小编就喜欢折腾,将Android折腾到底O(∩_∩)O~~

3.6K20

Android项目实战(五十六):获取WebView加载的url的请求错误

例如需求,我有一个WebView 加载一个url, 该url对应的网页本身自带下拉刷新 ,但是网页本身会有出现400 500 等异常请求错误码 这时候网页加载失败,页面本身的下拉是无法使用的,要求重新加载页面的话就需要在...webview外层套一个android下拉控件(SwipeRefreshLayout) 这样导致下拉一定用的SwipeRefreshLayout的下拉 最终要求是如果页面加载成功的话,用页面本身的下拉,...如果页面加载失败的话,用android下拉控件的下拉 --------------------------------------------------------------------------...------------------------------------------------------------------ 解决办法就是监听加载的url的请求的错误码,对SwipeRefreshLayout.setEnabled...() 来控制是否允许下拉刷新 监听对应6.0+  6.0以下 分别为两种实现方式: 一、Android 6.0+ 判断请求码 mWebView.setWebViewClient(new

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

Android webview加载https链接错误或无响应的解决

最近做无线WiFi的时候,在最后认证成功的时候会弹出一个广告页,于是用webview加载了一下,结果没反应,打印url出来看了一下,发现是https格式的,在使用WebView加载https资源文件时...,如果认证证书不被Android认可,那么会出现无法成功加载对应资源问题。...2、启用mixed content Android webView 从 Lollipop 开始默认不开MixedContentMode,因此,我们开启即可满足我们大多数需求。...或者还可以使用一些第三方加载也行。...测试: 1、调用高德地图没法显示,前端工程师用了http……那么改为https 2、部分功能没实现,因为后台的没有加证书…..那么,全部改回http 补充知识:Android WebView加载网页链接遇到的那些坑

4.2K10

Android获取WebView加载url的请求错误码 【推荐】

例如需求,我有一个WebView 加载一个url, 该url对应的网页本身自带下拉刷新 ,但是网页本身会有出现400 500 等异常请求错误码 这时候网页加载失败,页面本身的下拉是无法使用的,要求重新加载页面的话就需要在...webview外层套一个android下拉控件(SwipeRefreshLayout) 这样导致下拉一定用的SwipeRefreshLayout的下拉 最终要求是如果页面加载成功的话,用页面本身的下拉,...如果页面加载失败的话,用android下拉控件的下拉 ——————————————————————————————————————————————– 解决办法就是监听加载的url的请求的错误码,对SwipeRefreshLayout.setEnabled...@Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle...获取WebView加载url的请求错误码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

1.1K20

Carson带你学Android:手把手构建WebView缓存机制及资源加载方案

Android WebView 存在什么性能问题? Android WebView 里 H5 页面加载速度慢 耗费流量 下面会详细介绍。...解决方案 针对上述Android WebView的性能问题,我提出了3种解决方案: 前端H5的缓存机制(WebView 自带) 资源加载 资源拦截 下面我将详细介绍。...特点 充分利用数据的优势,可方便对数据进行增加、删除、修改、查询 c. 应用场景 存储适合数据的结构化数据 d....提早加载将需使用的H5页面,即 提前构建缓存 使用时直接取过来用而不用在需要时才去加载 具体实现 预加载WebView对象 & 预加载H5资源 2.2.1 预加载WebView对象 此处主要分为2...手把手构建WebView缓存机制及资源加载方案 Carson带你学Android:盘点你不知道的WebView漏洞

2.1K10

Android项目中的资源ID冲突的解决方法

1、前言 Android Studio对模块化开发提供的一个很有用的功能就是可以在主项目下新建项目(Module),但是在使用项目时却有一个问题就是资源ID冲突,因为编译时SDK会自动帮我们处理这个问题...这样照成的结果就是主项目进行编译时一旦发现资源ID冲突,项目中对应的资源文件以及引用资源文件的代码都需要重新编译。...在编译时,如果项目与主项目资源ID发生了重复,资源被分配了新的ID后项目之前编译过的代码也就失效了。...项目R类中的资源ID仅被 static 修饰,所以保留了变量。这样当资源ID发送冲突时,主项目R类不变,修改项目R类中的变量,项目已经编译过的代码仍有效。...根据前面所说,当项目整体编译时,项目资源ID一旦与主项目资源ID发送冲突,项目资源会被重新分配ID导致其R类被修改。显然这个过程并不涉及R2类,R2类中保留的仍然是过时的ID。

1.8K10

基于腾讯x5开源,提高60%开发效率

3.1 如何使用项目js调用 3.2 js的调用时机分析 04.问题反馈 4.0.1 视频播放宽度超过屏幕 4.0.2 x5加载office资源 4.0.3 WebView播放视频问题 4.0.4 无法获取...中的图片资源 5.0.3 自定义加载异常error的状态页面 5.0.4 WebView硬件加速导致页面渲染闪烁 5.0.5 WebView加载证书错误 5.0.6 web音频播放销毁后还有声音 5.0.7...4.0.6 如何处理加载错误(Http、SSL、Resource) 对于WebView加载一个网页过程中所产生的错误回调,大致有三种/** * 只有在主页面加载出现错误时,才会回调这个方法。...=null){ webListener.showErrorView(); } } } // 向主机应用程序报告Web资源加载错误。...,就让它加载本地错误网页文件 //mWebView.loadUrl("file:///android_asset/errorpage/error.html"); if (webListener

3.4K30

错误记录】Android WebView 报错 ( 网页无法打开 位于 http:... 的网页无法加载, 因为 net::ERR_CLEARTEXT_NOT_PERMITTED )

一、错误记录 ---- 报错信息 : 网页无法打开 位于 http://… 的网页无法加载, 因为 net::ERR_CLEARTEXT_NOT_PERMITTED ; 二、解决方案 ---- 在...Android 9.0 及以上的系统版本中,系统默认情况下禁止应用程序使用不安全的明文流量进行网络连接,以提高用户的安全性。...这意味着,如果应用程序尝试连接到一个不安全的 HTTP 网站,将收到 net::ERR_CLEARTEXT_NOT_PERMITTED 错误 ; 也就是说应用中的 WebView 尝试显示 HTTP 站点时就会报...net::ERR_CLEARTEXT_NOT_PERMITTED 错误 ; 解决方案一 在 AndroidManifest.xml 清单文件中的 application 节点配置 android:usesCleartextTraffic...="true" 属性 , 允许应用程序使用明文流量进行网络连接,该操作会降低应用程序的安全性 ; <application android:usesCleartextTraffic="true

2.3K30

WebView开源终极方案

项目地址:webView开源 同时,该案例中,04问题反馈也记录了绝大多数实际开发中遇到的问题,如果还有其他的问题,也可以发送给我,我收集起来放到一起,方便后期查阅。...,分为多种状态,比如常见的有,没有网络;404加载异常;onReceivedError,请求网络出现error;在加载资源时通知主机应用程序发生SSL错误@Override public void showErrorView...但如果做过页面加载速度的测试,会发现WebViewClient.onPageFinished()方法通常需要等待很久才会回调(首次加载通常超过3s),这是因为WebView需要加载完一个网页里主文档和所有的资源才会回调这个方法...4.0.3 WebView播放视频问题 4.0.4 无法获取webView的正确高度 4.0.5 使用scheme协议打开链接风险 4.0.6 如何处理加载错误 4.0.7 webView防止内存泄漏...5.0.2 加快加载webView中的图片资源 5.0.3 自定义加载异常error的状态页面 5.0.4 WebView硬件加速导致页面渲染闪烁 5.0.5 WebView加载证书错误 5.0.6

3K30

WebView深度学习(二)之全面总结WebView遇到的坑及优化

★★ 原因分析:原因是Android 5.0上Webview默认不允许加载Http与Https混合内容: ◆◆ 解决方案: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP...,即使起源是不安全的; ● MIXED_CONTENT_NEVER_ALLOW 不允许Https加载Http的内容,即不允许从安全的起源去加载一个不安全的 资源; ● MIXED_CONTENT_COMPLTIBILITY_MODE...当WebView加载出错时,我们会在WebViewClient实例中的onReceivedError()方法接收到错误,我们就在这里做些手脚: @Override public void onReceivedError...---- 其实也有一些替代WebView,比如腾讯的TBS 腾讯浏览服务, 比如WebViewJavascriptBridge等方式,有兴趣的可以去了解一下,个人建议还是用原生的WebView...比较好,不能动不动就用框架,框架也不一定适用于自己项目,所以我们可以看看这些框架它的使用原理,吸收框架的精华,自己去灵活封装一下用在自己项目中。

5.6K30

Python 爬虫时,高版本 App 如何进行抓包?

而且在 Android 9.0(API 28)及更高版本上,不仅默认只系统预装的 CA 证书,还默认禁止所有明文通信(不允许 http 请求) 解决办法: 前提:在手机端和电脑端都必须安装 https... 重新打包项目,然后抓包,即可成功 Webview 抓包失败 上面可以解决 Android 原生抓包问题,但在 Android7.0 以上的手机,开着网络代理访问不了...error) 这样是为了忽略掉 SSL 证书错误 因为开启代理后网络会变得不安全,证书会报错误Webview 检测到证书错误之后就不请求任何数据。...,继续加载页面 代码如下: WebView webview = (WebView) findViewById(R.id.webview); webview.setWebViewClient(new WebViewClient...(view, handler, error); // 忽略SSL证书错误,继续加载页面 handler.proceed(); } }

2.1K10

Android webView打开网页

onPageFinished():页面完成加载时调用,这时候可以隐藏加载进度条,提醒用户页面已经完成加载。 onLoadResource():页面每次加载资源时调用。...onReceivedError():页面加载发生错误时调用,这时候可以跳转到自定义的错误提醒页面,总比系统默认的错误页面美观,优化用户体验。...onReceivedHttpError():页面加载请求时发生错误。 onReceivedSslError():页面加载资源时发生错误。...拦截url - onReceivedError 访问错误时回调,例如访问网页时报错404,在这个方法回调的时候可以加载错误页面。...例如html中想要回调这个方法可以这样写:javascript:android.getClient(“传一个字符串给客户端”); onDestroy activity销毁时释放webView资源

1.7K20

为何Android 7.0 以上Charles和Fiddler无法抓取HTTPS包?

而且在 Android 9.0(API 28)及更高版本上,不仅默认只系统预装的 CA 证书,还默认禁止所有明文通信(不允许 http 请求)。...webview抓包失败 上面可以解决android原生抓包问题,但在android7.0以上的手机,开着网络代理访问不了webview,若要抓包webview, 需要在webview的WebViewClient...中,将一行代码给注释掉: super.onReceivedSslError(view, handler, error) 这样是为了忽略掉SSL证书错误,因为开启代理后网络会变得不安全,证书会报错误webview...,继续加载页面,代码如下: WebView webview = (WebView) findViewById(R.id.webview); webview.setWebViewClient(new WebViewClient...(view, handler, error); // 忽略SSL证书错误,继续加载页面 handler.proceed(); } } 以上内容参考:流柯 和 JohnnyShieh

5.9K20

移动 web 最佳实践(干货长文)

开源社区中有很多功能强大的 JSBridge,例如上面列举的。本项目基于保持 iOS android 平台接口统一原因,采用了 DSBridge,各位可以选择适合自己项目的工具。...下面是本项目的 .browserslistrc 配置: iOS >= 10 // 即 iOS Safari Android >= 6.0 // 即 Android WebView last 2 versions...) js 报错 网页崩溃 其中静态资源加载失败,可以通过 window.addEventListener('error', ..., true) 在事件捕获阶段获取,然后筛选出资源加载失败的错误并手动上报错误...核心代码如下: // 全局监控资源加载错误 window.addEventListener( 'error', (event) => { // 过滤 js error const...如果是 webview 加载网页,也可以通过 webview 加载失败的钩子监控网页崩溃等。 如何监控网页崩溃?

2.7K61

WebView最详解

AndroidWebview在低版本和高版本采用了不同的 webkit版本内核,4.4后使用了 Chrome内核,而 WebView可以对 url请求、页面加载、渲染、页面交互进行处理。...↳android.webkit.WebView 其继承关系如上图所示,下面是一个简单的代码示例: //WebView类下面的方法,通常使用的就是我们用来加载Url mWebView.loadUrl...-8"); //设置默认的字体大小,默认16,可取值1到72 ws.setDefaultFontSize(36); /* *API21调用 *当一个安全的来源(origin)试图从一个不安全的来源加载资源时配置...所传值会被近似为数据支持的最近似值,因此这是一个指示值,而不是一个固定值。 *所传值若小于数据大小不会让数据调整大小。默认值是MAX_VALUE,建议将默认值设置为最大值。...request, WebResourceError error) { //加载页面的服务器出现错误时调用 error.getErrorCode()对应异常码,可以进行业务处理

1.1K30

WebView设置WebViewClient的方法

WebView设置WebViewClient的方法 shouldOverrideUrlLoading: 在web页面里单击链接的时候,会自动调用android自带的浏览器来打开链接,需要通过该方法在本页面打开...) 通知主机应用程序更新其访问数据的链接。...error) 向应用程序报告Web资源加载错误.这些错误通常会显示无法连接到服务器,回调时注意与弃用版本,新版本将针对任何资源(iframe,picture),不仅针对主页面,因此,建议在这个回调上执行加载资源错误的...) 通知应用程序加载资源时发生SSL错误,主机应用程序必须调用handler.cancel()或者handler.proceed().注意,这个决定可能被保留应对未来的SSL错误,默认的行为是取消(cancel....如果返回值为null,这个WebView将会继续加载普通的资源请求.否则,返回响应的数据将会被使用.

1.5K41

移动 Web 最佳实践(干货长文,建议收藏)

开源社区中有很多功能强大的 JSBridge,例如上面列举的。本项目基于保持 iOS android 平台接口统一原因,采用了 DSBridge,各位可以选择适合自己项目的工具。...下面是本项目的 .browserslistrc 配置: iOS >= 10 // 即 iOS Safari Android >= 6.0 // 即 Android WebView last 2 versions...) js 报错 网页崩溃 其中静态资源加载失败,可以通过 window.addEventListener('error', ..., true) 在事件捕获阶段获取,然后筛选出资源加载失败的错误并手动上报错误...核心代码如下: // 全局监控资源加载错误 window.addEventListener( 'error', (event) => { // 过滤 js error const...如果是 webview 加载网页,也可以通过 webview 加载失败的钩子监控网页崩溃等。 如何监控网页崩溃?

2.4K10

基于 Vue 和 TS 的 Web 移动端项目实战心得

开源社区中有很多功能强大的 JSBridge,例如上面列举的。本项目基于保持 iOS android 平台接口统一原因,采用了 DSBridge,各位可以选择适合自己项目的工具。...下面是本项目的 .browserslistrc 配置: iOS >= 10 // 即 iOS Safari Android >= 6.0 // 即 Android WebView last 2 versions...) js 报错 网页崩溃 其中静态资源加载失败,可以通过 window.addEventListener('error', ..., true) 在事件捕获阶段获取,然后筛选出资源加载失败的错误并手动上报错误...核心代码如下: // 全局监控资源加载错误 window.addEventListener( 'error', (event) => { // 过滤 js error const...如果是 webview 加载网页,也可以通过 webview 加载失败的钩子监控网页崩溃等。 如何监控网页崩溃?

3.4K21

Android:你不知道的 WebView 使用漏洞

WebView 加载页面前加载一段本地的 JS 代码,原理是: 让JS调用一Javascript方法:该方法是通过调用prompt()把JS中的信息(含特定标识,方法名称等)传递到Android端;...如果不允许使用 file 协议,则不会存在上述的威胁; webView.getSettings().setAllowFileAccess(true); 但同时也限制了 WebView 的功能,...通过该代码可成功读取 /etc/hosts 的内容数据 解决方案:设置setAllowFileAccessFromFileURLs(false); 当设置成为 false 时,上述JS的攻击代码执行会导致错误...使用 JavaScript(默认是不允许webView.getSettings().setJavaScriptEnabled(true); // 但很多应用(包括移动浏览器)为了让 WebView...Android WebView与 JS 的交互方式 手把手教你构建 Android WebView 的缓存机制 & 资源加载方案 接下来我会继续讲解其他安卓开发的知识,有兴趣可以继续关注Carson_Ho

3.2K20
领券