我试图在WebView
遇到错误时显示自定义html代码。在WebView上显示自定义HTML错误泄露实际页面
它工作正常,除了1不想要的行为:有时(特别是当垃圾邮件)loadUrl
简要显示真正的错误页面。
下面是它的外观:
有谁知道是什么导致了这一点,并/或如何避免呢?防止WebView
完全绘制,直到加载完成为止。这也会导致正确显示的页面“等待”,直到完全加载。
代码来重新创建这个问题很简单:
activity_main.xml
MainActivity.java
我试图在WebView
遇到错误时显示自定义html代码。在WebView上显示自定义HTML错误泄露实际页面
它工作正常,除了1不想要的行为:有时(特别是当垃圾邮件)loadUrl
简要显示真正的错误页面。
下面是它的外观:
有谁知道是什么导致了这一点,并/或如何避免呢?防止WebView
完全绘制,直到加载完成为止。这也会导致正确显示的页面“等待”,直到完全加载。
代码来重新创建这个问题很简单:
activity_main.xml
MainActivity.java
发生这种情况是因为当您调用loadData
时,请求仅在WebView完成处理其他任务(如显示错误页面)后才被处理。基本上,应用程序作者无法将自己的内容加载到WebView加载的内容上,以至于不会被用户注意到。
我建议两个备选方案:
看跌的WebView屏幕外第一(即外部可见的屏幕坐标),试装,捕获错误,加载错误页面,等待onPageFinished
它,然后在屏幕上移动WebView。
请自行加载,例如Cronet,并通过shouldInterceptRequest
将结果提供给WebView。这是更复杂的方法,但是可以完全控制WebView显示的内容。基本上,您不需要在WebView中处理onReceivedError
,因为WebView实际上永远不会自己获取内容。如果在装载器中检索数据时遇到任何问题,您将自己生成错误页面并作为结果提供给WebView以进行显示。
...并且我的方法与AOSP错误中的项目1略有不同:https://code.google.com/p/android/issues/detail?id=2340#c6,@ isma3l - 感谢您提供它! –
有这个没有修复尚未:https://code.google.com/p/android/issues/detail?id=2340 – isma3l
@ isma3l感谢AOSP链接:) – Simas