Android WebView onReceivedError ()

¿Alguien sabe si hay una forma de interceptar una "página no encontrada" o "página no error de carga" en WebView?

De acuerdo con la documentación de Android, onReceivedError() debería ser capaz de interceptar. Pero lo probé en una aplicación que yo daría mal la dirección URL equivocada, y no hizo nada.

Quiero que mi aplicación pueda dar mi propio mensaje de error personalizado si la URL no está disponible por ningún motivo.

Este es el código que no hizo nada:

 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { // custom error handling ... show and alert or toast or something } 

De acuerdo con la documentación y mi experiencia debe funcionar bastante bien. Sólo tienes que configurar tu WebClient con el método overriden onReceivedError en tu WebView.

Aquí está el fragmento de algunas de mis aplicaciones de prueba de edad:

  WebView wv = (WebView) findViewById(R.id.webView); wv.setWebViewClient(new WebViewClient() { @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Log.i("WEB_VIEW_TEST", "error code:" + errorCode); super.onReceivedError(view, errorCode, description, failingUrl); } }); 

Lo he probado y funciona bastante bien. Compruebe sus registros y vea qué tipo de error de código recibe. Espero eso ayude.

He intentado usar onReceivedError tanto dentro de shouldOverrideUrlLoading () como fuera de ese método, pero en el WebViewClient. Incluso intenté fuera en la clase de actividad principal. Yo no estaba contento con los resultados inconsistentes. Así que decidí usar un método de prueba, isOnline (), y llamar a eso antes de llamar a loadUrl ().

 public boolean isOnline() { ConnectivityManager cm = (ConnectivityManager) getBaseContext() .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo i = cm.getActiveNetworkInfo(); if ((i == null) || (!i.isConnected())) { Toast toast = Toast.makeText(getBaseContext(), "Error: No connection to Internet", Toast.LENGTH_SHORT); toast.setGravity(Gravity.TOP | Gravity.CENTER, 0, 0); toast.show(); return false; } return true; } 

Entonces este onReceivedError está en el WebViewClient pero fuera del método overloadurlthingy. Esto parece evitar consistentemente las páginas de error estúpidas, smirking-android.

  @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { if (view.canGoBack()) { view.goBack(); } Toast toast = Toast.makeText(getBaseContext(), description, Toast.LENGTH_SHORT); toast.setGravity(Gravity.TOP | Gravity.CENTER, 0, 0); toast.show(); } 

Algunas personas podrían considerar este recurso pesado. Bueno, no pesado la forma en que las aplicaciones de Android Facebook y Google+ son. Y no la forma en que los servicios de Google son. Francamente no me importa usar un poco de esas aplicaciones de oxígeno. Llámame un chico malo …

Usted debe usar esto después de la página en la página terminada

  @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error){ //Your code to do Toast.makeText(getActivity(), "Your Internet Connection May not be active Or " + error , Toast.LENGTH_LONG).show(); } 
  • Reproducción tardía de la webview de Android
  • Pantalla blanca tras cerrar el video de pantalla completa abierto desde WebView
  • ¿Es posible utilizar content: // como fuente para un elemento <audio> en un WebView
  • Rendimiento de Android WebView
  • JavaScript no funciona en Android WebView
  • Frameloader buscar extra UA String - UAProfURL
  • ¿Cambiar el color del texto en un WebView?
  • Ajustar el contenido de un WebView en pantalla con soporte de zoom
  • ¿WebView no carga datos?
  • ¿Cómo puedo mostrar una página web personalizada no disponible en Android WebView?
  • Abrir una nueva actividad de Android con una vista web muestra una pantalla en blanco (en blanco) en lugar del contenido html
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.