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.
- Android WebView Inyectar Javascript antes de html cargado
- Android WebView: Determine <a> target = "_ blank"
- Captura de pantalla de WebView en Android
- Cómo obtener el evento de la finalización del video de youtube en android webview
- @Android mostrar / res / visibles en WebView
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 }
- ¿Cómo mostrar la página de contenido Html sabia usando webview en android?
- Destruir vista web en Android
- Mostrar documento de Google Docs en un WebView
- ¿Por qué Android WebView muestra una pantalla en negro?
- ¿WebView NO abre el reproductor de vídeo por defecto de android?
- Url abierta en pantalla completa en lugar de Webview
- ¿Cargar html local en WebView?
- Error de vista web de Android "Señal fatal 5 (SIGTRAP)"
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(); }
- Preguntas sobre la preparación de un apk para la Amazon App Store de Android
- Almacenamiento extraíble (externo) vía sdcard por los fabricantes