Quiero registrar la URL del historial o la última URL cargada sin almacenar manualmente las URL del historial. ¿Es eso posible?Obtener la última URL cargada de la vista web sin hacer una webView.goBack() en Android
Respuesta
encontrado la respuesta en la documentación ...
WebBackForwardList mWebBackForwardList = mWebView.copyBackForwardList();
String historyUrl = mWebBackForwardList.getItemAtIndex(mWebBackForwardList.getCurrentIndex()-1).getUrl();
Puede mantener una pila (lista) de las URL visitadas al agregarlas en la página Finalizada() y eliminarlas cuando el usuario haga una copia de seguridad.
es decir
private List<String> urls = new ArrayList<String>();
@Override
public final void onPageFinished(final WebView view,final String url) {
urls.add(0, url);
super.onPageFinished(view, url);
}
y luego trampa de la llave en la actividad:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (urls.size() == 1) {
finish();
return true;
} else if (urls.size() > 1) {
urls.remove(0);
// load up the previous url
loadUrl(urls.get(0));
return true;
} else
return false;
default:
return super.onKeyDown(keyCode, event);
}
}
onPageFinished tiende a ser llamada múltiple veces por página, especialmente si hay un nuevo trazado (por ejemplo, cursores parpadeantes) o iframes. También podría should OverrideUrlLoading, que solo recibe una nueva URL, pero que no se llama para iframes. Entonces, el mejor enfoque es usar una combinación de uso en PageFinished y shouldOverrideUrlLoading como se describe en http://stackoverflow.com/questions/3149216/how-to-listen-for-a-webview-finishing-loading-a-url-in -android – Torid
Sí, cierto. Tendría que ver si la url ya estaba en la lista (en la posición cero) y no agregarla en ese caso. – tarrant
Supongo que no me di cuenta, ** no ** quiero guardar las URL manualmente. La vista web mantiene una pila de historial, ¿verdad? Solo quiero obtener la última URL cargada. –
- 1. Pantalla de bienvenida al cargar una URL en una vista web en la aplicación de Android
- 2. Obtener la fecha de la última modificación de una URL
- 3. ¿Cómo obtener la última ruta en una URL?
- 4. Bloquear ciertas URL para la seguridad en la vista web de android
- 5. Django: Imprimir url de vista sin hardcoding la url
- 6. Cómo obtener la última posición de vista de desplazamiento, scrollview
- 7. obtener la URL sin querystring
- 8. Obtener caracteres después de la última/url en
- 9. Obtener la última página visitada
- 10. Django obtener la URL de archivos estáticos en la vista
- 11. Mostrar una parte de la página web en la vista web android
- 12. cómo mostrar el progreso al cargar una URL a la vista web en android?
- 13. Compartiendo cookies de la vista web con BasicHttpRequest en Android
- 14. ¿Hay una vista previa 'Obtener la última versión' en TFS? (Como el comando 'Obtener' de VSS)
- 15. Android: Cómo hacer referencia a imágenes de activos desde una página html cargada remotamente en webview
- 16. Incrustar una vista web en otra vista
- 17. ¿Cómo obtener la última URL obtenida por cURL?
- 18. Forzar la vista web para abrir las URL dentro de la aplicación - aplicación de Android
- 19. cómo obtener la URL de la webView
- 20. Establezca una cookie en una vista web en Android
- 21. ¿La alerta no aparece desde la vista web en android?
- 22. android - Cómo mostrar las instrucciones en la vista web
- 23. ¿Cómo abrir una URL UITextView en la vista web de la interfaz de usuario?
- 24. Seguimiento del texto seleccionado en la vista web de Android
- 25. La visualización de una imagen cargada en MVC 3 Razor
- 26. ¿Alguna manera de ocultar elementos de la vista web? (Android)
- 27. Problema raro en la vista web de Android con lienzo
- 28. ¿Cómo mostrar una página HTML desde la carpeta sin formato en res con la vista web de Android?
- 29. Almacenamiento en caché en la vista web de Android
- 30. Android obtener alojamiento Actividad desde una vista
Funciona, pero hay un error. Si estás en PageA, entonces vas a PageB. Ahora cuando presiona el botón Atrás, regresa correctamente a la página A. Pero ahora si presiona el botón Atrás otra vez, lo llevará de nuevo a PageB porque la página B era la página anterior. Entonces, recorrerá las dos páginas para siempre. –
En cualquier caso, no estaba usando el historial para navegar a las páginas, por lo que no sería un problema en mi caso. Solo lo necesitaba para fines de registro. ¿Está utilizando la barra de desplazamiento hacia atrás para navegar? Si es así, ¿por qué? El navegador de Android se encargaría de eso por defecto, ¿no? –
Tuve que implementar un navegador muy simple. Usé esto en su lugar: 'if (browser.canGoBack()) {browser.goBack()} else {finish()}' Esto funcionó bien para mí. –