Android lee el historial del navegador

Quiero leer el historial del navegador en el teléfono Android.

He hecho algunas lecturas de documentos, luego llegué a saber que podemos leer el historial del navegador por la clase android.provider.Browser. Tiene :

final static Cursor getAllVisitedUrls(ContentResolver cr) 

… método que devuelve Cursor .

¿Puedo obtener ayuda para manejar Cursor, o cualquier código de ejemplo para obtener el historial del navegador?

Realmente no es una respuesta, pero puedo decirte lo que hice.

Primero clono el repository del navegador y trato de reproducir cómo obtienen el historial. Y comencé a obtener:

Denegación de permiso: leyendo com.android.browser.BrowserProvider

Entonces agregué:

  

Pero todavía me está dando el mismo error. Lo busqué en google y encontré esto Accediendo a los datos con los cursores de Android .

Espero eso ayude.

ManageQuery ha quedado en desuso así que use getContentResolver en su lugar, use el siguiente código:

 String[] proj = new String[] { Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL }; String sel = Browser.BookmarkColumns.BOOKMARK + " = 0"; // 0 = history, 1 = bookmark Cursor mCur = getContentResolver().query(Browser.BOOKMARKS_URI, proj, sel, null, null); mCur.moveToFirst(); @SuppressWarnings("unused") String title = ""; @SuppressWarnings("unused") String url = ""; if (mCur.moveToFirst() && mCur.getCount() > 0) { boolean cont = true; while (mCur.isAfterLast() == false && cont) { title = mCur.getString(mCur.getColumnIndex(Browser.BookmarkColumns.TITLE)); url = mCur.getString(mCur.getColumnIndex(Browser.BookmarkColumns.URL)); // Do something with title and url mCur.moveToNext(); } } 

También agregue permisos usando

  

Para Lollipop o antes

Puedo obtener el historial usando el siguiente código:

 Cursor mCur = activity.managedQuery(Browser.BOOKMARKS_URI, Browser.HISTORY_PROJECTION, null, null, null); if (mCur.moveToFirst()) { while (mCur.isAfterLast() == false) { Log.v("titleIdx", mCur .getString(Browser.HISTORY_PROJECTION_TITLE_INDEX)); Log.v("urlIdx", mCur .getString(Browser.HISTORY_PROJECTION_URL_INDEX)); mCur.moveToNext(); } } 

Esta publicación es un poco antigua, pero aquí hay otra solución fácil para obtener datos relacionados con los proveedores de contenido de Bookmark y Search en Android:

Utilice esta lib: https://github.com/EverythingMe/easy-content-providers

Obtener todos los marcadores:

 BrowserProvider browserProvider = new BrowserProvider(context); List bookmarks = browserProvider.getBookmarks().getList(); 

Cada marcador tiene todos los campos, por lo que puede obtener la información que necesita: título, URL, visitas, …

Obtener todo el historial de búsqueda :

 List searches = browserProvider.getSearches().getList(); 

Funciona con listas o cursor y hay una aplicación de muestra para ver cómo se ve y funciona.

De hecho, existe soporte para todos los proveedores de contenido de Android, como: Contactos, SMS, Llamadas, … Documento completo con todas las opciones: https://github.com/EverythingMe/easy-content-providers/wiki/Android-providers

Espero que haya ayudado 🙂

  public ArrayList getBrowserHistory() { String title = ""; String url = ""; ArrayList list = new ArrayList(); String[] proj = new String[] { Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL }; String sel = Browser.BookmarkColumns.BOOKMARK + " = 0"; // 0 = history, // 1 = bookmark Cursor mCur = getContentResolver().query(Browser.BOOKMARKS_URI, proj, sel, null, null); mCur.moveToFirst(); if (mCur.moveToFirst() && mCur.getCount() > 0) { boolean cont = true; while (mCur.isAfterLast() == false && cont) { HistoryEntry entry = new HistoryEntry(); title = mCur.getString(mCur .getColumnIndex(Browser.BookmarkColumns.TITLE)); url = mCur.getString(mCur .getColumnIndex(Browser.BookmarkColumns.URL)); // Do something with title and url entry.setTitle(title); entry.setUrl(url); list.add(entry ); Log.d("TAG", "title " + title); mCur.moveToNext(); } } mCur.close(); return list; }