android - Android OS 似乎在 WebViewClient 中的文件下载链接上触发错误
问题描述
我遇到了一个奇怪的问题,我们网站上的某些下载链接会导致应用调用 WebViewClientonReceivedError
方法。该应用程序正在从网站获得 200 响应,并且似乎正在我们的下载侦听器中正确处理所有内容,但介于两者之间onPageStart
并onPageFinished
不断触发呼叫。此外,Android 文档实际上没有任何内容,ERR_FAILED
而且我还没有在网上找到其他似乎可以解释它的信息。这是我们的应用程序自身发生的错误的日志记录。
Legacy Error :: onReceivedError, errorCode=-1, desc=net::ERR_FAILED
这是我可以从调试器获得的堆栈跟踪
onReceivedError:487, ****WebViewClient (com.****.webview)
handleMessage:128, on
dispatchMessage:107, Handler (android.os)
loop:237, Looper (android.os)
main:7762, ActivityThread (android.app)
invoke:-1, Method (java.lang.reflect)
run:493, RuntimeInit$MethodAndArgsCaller (com.android.internal.os)
main:1047, ZygoteInit (com.android.internal.os)
这令人沮丧,因为无论如何都会发生下载,而我能想出的唯一解决方案就是对“失败”的 url 进行特殊封装,这样当应用程序似乎表现得非常好时,我们实际上不会抛出异常。只是继续前进。这显然会遇到问题,因为引入了更多这些链接,因为它是一种被动解决方案而不是主动解决方案,并且并非所有下载链接都会遇到这个问题。另一件奇怪的事情是,这不会在模拟器中触发,这意味着在实际设备上存在一些导致错误的差异。
解决方案
推荐阅读
- bazel - 我可以查询一组标签吗?
- python - 如何在 python 中禁用鼠标事件?
- colors - TradingView Strategy Tester - 我可以更改图表上进入/退出箭头的颜色吗
- php - 使用 PHP/Laravel 以 Word 或 PDF 格式打开 HTML
- flutter - Listview builder不更新列表中的值
- java - 在不停止 UI 线程的情况下向 android 中的循环添加延迟
- php - 如何让 PayPal 与 Laravel PHP 一起使用?
- javascript - 为什么整数键的“映射”操作比 JavaScript (v8) 中的“对象”慢得多?
- javascript - 从 node.js 调用 python sql 函数或做出反应
- c++ - 为什么使用 malloc() free(ptr) 后输出会发生变化?我认为输出将是 NULL,因为我已经释放了内存,但它显示了一些数字