studio propiedades codigo based app android webview

android - propiedades - WebViewClient onReceivedError obsoleto, la nueva versión no detecta todos los errores



webview android studio 2017 (2)

Tenga en cuenta que el dispositivo móvil donde está probando necesita ejecutar Android Marshmallow (API 23). Incluso si desarrolla su aplicación en API 23 SDK, pero luego ejecuta la aplicación en Android Lollipop, seguirá obteniendo el "antiguo" onReceivedError , porque es la función del SO, no de un SDK.

Además, el "código de error 109" (supongo que esto es net::ERR_ADDRESS_UNREACHABLE ) no es un código de error HTTP, es el código de error de Chrome. onReceivedHttpError solo se onReceivedHttpError para los errores recibidos del servidor a través de HTTP. Cuando el dispositivo está en modo avión, posiblemente no pueda recibir una respuesta de un servidor.

En Android SDK 23 onReceivedError(WebView view, int errorCode, String description, String failingUrl) ha quedado en desuso y reemplazado por onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) . Sin embargo, si pongo mi teléfono en modo avión y cargo una url en mi WebView, solo se llama a la versión obsoleta del método.

onReceivedHttpError (WebView view, WebResourceRequest request, WebResourceResponse errorResponse) tampoco es útil, ya que solo detecta errores superiores a 500 y onReceivedHttpError (WebView view, WebResourceRequest request, WebResourceResponse errorResponse) un código de estado de 109.

¿Existe alguna forma no obsoleta de detectar que mi WebView no se cargó?


También podría hacer lo siguiente:

@SuppressWarnings("deprecation") @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { // Handle the error } @TargetApi(android.os.Build.VERSION_CODES.M) @Override public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError rerr) { // Redirect to deprecated method, so you can use it in all SDK versions onReceivedError(view, rerr.getErrorCode(), rerr.getDescription().toString(), req.getUrl().toString()); }

Asegúrate de importar android.annotation.TargetApi

Feliz codificación!