Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


WebViewClient onReceivedError obsoleta, la nueva versión no detecta todos los errores

En el SDK de Android 23 onReceivedError(WebView view, int errorCode, String description, String failingUrl) ha sido obsoleta y reemplazado por onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) . Sin embargo, si pongo mi teléfono en el modo Avión y carga una url en mi WebView, sólo se llama a la versión obsoleta del método.

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

¿Existe una manera no obsoleta de detectar que mi WebView no pudo cargar?

  • ¿Cómo forzar a WebView a saltar imágenes?
  • Programmatic haga clic en Android WebView
  • Android webview cargar Javascript local
  • Android: no se puede obtener javascript para trabajar en WebView incluso con setJavaScriptEnabled (true)
  • La vista web de Android no puede convertir el video de youtube incrustado a través de iframe
  • ¿Cómo configurar WebView como no fullscreen?
  • Cargar archivo somefile.html desde el almacenamiento interno a una vista web de una aplicación
  • Abrir un archivo html ubicado dentro de mi aplicación usando WebView
  • 2 Solutions collect form web for “WebViewClient onReceivedError obsoleta, la nueva versión no detecta todos los errores”

    Tenga en cuenta que el dispositivo móvil en el que está probando necesita ejecutar realmente Marshmallow de Android (API 23). Incluso si desarrolla su aplicación en el SDK de la API 23, pero luego ejecuta la aplicación en Android Lollipop, seguirá recibiendo el "antiguo" onReceivedError , porque es la característica del sistema operativo, 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 sólo se llama para los errores recibidos desde el servidor a través de HTTP. Cuando el dispositivo está en modo avión, no puede posiblemente recibir una respuesta de un servidor.

    También puede 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úrese de importar android.annotation.TargetApi

    Codificación feliz!

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.