2015-10-13 58 views
0

我试图在WebView遇到错误时显示自定义html代码。在WebView上显示自定义HTML错误泄露实际页面

它工作正常,除了1不想要的行为:有时(特别是当垃圾邮件)loadUrl简要显示真正的错误页面。

下面是它的外观:

unwanted behaviour

有谁知道是什么导致了这一点,并/或如何避免呢?防止WebView完全绘制,直到加载完成为止。这也会导致正确显示的页面“等待”,直到完全加载。

代码来重新创建这个问题很简单:

activity_main.xml
MainActivity.java

+1

有这个没有修复尚未:https://code.google.com/p/android/issues/detail?id=2340 – isma3l

+0

@ isma3l感谢AOSP链接:) – Simas

回答

0

禁用按钮,当您点击它,然后启用它,当页面完成加载。

+0

使得'的WebView '直到页面加载完成才反应,对我来说不是一个合适的解决方案,对不起。 – Simas

0

发生这种情况是因为当您调用loadData时,请求仅在WebView完成处理其他任务(如显示错误页面)后才被处理。基本上,应用程序作者无法将自己的内容加载到WebView加载的内容上,以至于不会被用户注意到。

我建议两个备选方案:

  1. 看跌的WebView屏幕外第一(即外部可见的屏幕坐标),试装,捕获错误,加载错误页面,等待onPageFinished它,然后在屏幕上移动WebView。

  2. 请自行加载,例如Cronet,并通过shouldInterceptRequest将结果提供给WebView。这是更复杂的方法,但是可以完全控制WebView显示的内容。基本上,您不需要在WebView中处理onReceivedError,因为WebView实际上永远不会自己获取内容。如果在装载器中检索数据时遇到任何问题,您将自己生成错误页面并作为结果提供给WebView以进行显示。

+0

...并且我的方法与AOSP错误中的项目1略有不同:https://code.google.com/p/android/issues/detail?id=2340#c6,@ isma3l - 感谢您提供它! –

相关问题