android - samsung - ver historial tablet
Android lee el historial del navegador (5)
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<Bookmark> 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<Search> 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 :)
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?
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
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />
Realmente no es una respuesta, pero puedo decirte lo que hice.
Primero clono el repositorio 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é:
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />
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.
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();
}
}
public ArrayList<HistoryEntry> getBrowserHistory() {
String title = "";
String url = "";
ArrayList<HistoryEntry> list = new ArrayList<HistoryEntry>();
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;
}