【发布时间】:2015-09-24 19:33:41
【问题描述】:
在 Android SDK 23 中,onReceivedError(WebView view, int errorCode, String description, String failingUrl) 已被弃用并替换为 onReceivedError(WebView view, WebResourceRequest request, WebResourceError error)。但是,如果我将手机置于飞行模式并在我的 WebView 上加载一个 url,则只会调用该方法的弃用版本。
onReceivedHttpError (WebView view, WebResourceRequest request, WebResourceResponse errorResponse) 也没有用,因为它只检测高于 500 的错误,而我得到的是 109 状态码。
是否有一种不被弃用的方法来检测我的 WebView 无法加载?
【问题讨论】:
-
确保您正在使用 Android SDK 23 进行测试
-
@KaranMer,已经是这样了。
-
您正在测试的移动设备是否实际运行 Android Marshmallow (API 23)?即使您在 API 23 SDK 上开发您的应用程序,然后在 Android Lollipop 上运行该应用程序,您仍然会得到“旧的”
onReceivedError,因为它是操作系统的功能,而不是 SDK 的功能。此外,“错误代码 109”(我猜,这是 net::ERR_ADDRESS_UNREACHABLE)不是 HTTP 错误代码,而是 Chrome 的错误代码。onReceivedHttpError仅针对通过 HTTP 从服务器接收到的错误调用。当设备处于飞行模式时,它不可能收到来自服务器的回复。 -
@MikhailNaganov 这很有帮助。如果您将其发布为答案,我会接受。
-
所以解决方案是覆盖客户端中的这两种方法,并期望操作系统确定调用哪个方法,我猜。