Cómo obtener la URL actual en un navegador de Android
Estoy buscando una forma de obtener la URL actual que un usuario está visitando en la aplicación del navegador android. Me di cuenta de que puedo obtener la última URL visitada de la Browser.BOOKMARKS_URI
datos Browser.BOOKMARKS_URI
utilizando la siguiente técnica:
Cursor cursor = context.getContentResolver().query(Browser.BOOKMARKS_URI, Browser.HISTORY_PROJECTION, null, null, Browser.BookmarkColumns.DATE + " DESC"); cursor.moveToNext(); String url = cursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX); cursor.close();
El problema con esto es que Browser.BOOKMARKS_URI
db no se actualiza cuando el usuario presiona de nuevo para navegar a la página anterior en el explorador y la consulta devuelve resultados incorrectos.
- URL del navegador de Android URL
- Android cómo crear un esquema de URL personalizado con el formato dado myapp: // http: //
- Quitar el prefijo de URL de String (http: /, www, etc.)
- ¿Está el intento de compartir facebook en Android todavía roto?
- Cargar archivo local y obtener Error cromo desconocido: -6
Vea el siguiente ejemplo:
- El usuario accede a www.google.com -> Consulta devuelve "www.google.com"
- El usuario navega a www.imdb.com -> Consulta devuelve "www.imdb.com"
- El usuario pulsa de nuevo para volver a www.google.com -> Consulta devuelve "www.imdb.com" (!!)
¿Alguien tiene alguna idea de cómo devolver el url correcto un usuario está viendo?
- ¿Por qué WebView no puede abrir algunas URL locales (Android)?
- Uso de una URL web para SUGGEST_COLUMN_ICON_1 para sugerencias de búsqueda
- webview abre navegador predeterminado, no sé dónde poner código
- ¿Cómo abrir un sitio web cuando se hace clic en un botón en la aplicación de Android?
- SocketException: ¿Permiso denegado?
- Android webview loadDataWithBaseURL cómo cargar imágenes de los activos?
- ¿Cómo puedo crear una aplicación en la que puedo "compartir" una URL en Android?
- ¿Qué tipo de url debería usar en android para enviar solicitud al servidor?
Creo que no has pasado por el siguiente enfoque. Una vez que lo intente! Puede acceder al historial de navegación de la misma manera que lo hace para otros ContentProviders. Además del historial de navegación, también puede obtener una lista de marcadores.
Cursor webLinksCursor = getContentResolver().query(Browser.BOOKMARKS_URI, Browser.HISTORY_PROJECTION, null, null, Browser.BookmarkColumns.DATE + " DESC"); int row_count = webLinksCursor.getCount(); int title_column_index = webLinksCursor.getColumnIndexOrThrow(Browser.BookmarkColumns.TITLE); int url_column_index = webLinksCursor.getColumnIndexOrThrow(Browser.BookmarkColumns.URL); if ((title_column_index > -1) && (url_column_index > -1) && (row_count > 0)) { webLinksCursor.moveToFirst(); while (webLinksCursor.isAfterLast() == false) { if (webLinksCursor.getInt(Browser.HISTORY_PROJECTION_BOOKMARK_INDEX) != 1) { if (!webLinksCursor.isNull(url_column_index)) { Log.i("History" , "Last page browsed " + webLinksCursor.getString(url_column_index)); break; } } webLinksCursor.moveToNext(); } } webLinksCursor.close();
Y usted necesita el permiso también
com.android.browser.permission.READ_HISTORY_BOOKMARKS
- ¿Trabajar alrededor de la fuga de SpellCheckerSession?
- Android External App Install (en la tarjeta SD), vuelva a cargar las alarmas del alarmmanager al re-montar a través del receptor