Je veux lire l'historique du navigateur dans Android.
J'ai fait de la lecture de documents, puis j'ai appris que nous pouvons lire l'historique du navigateur par classe Android.provider.Browser. Il a :
final static Cursor
getAllVisitedUrls(ContentResolver cr)
... méthode qui renvoie Cursor
.
Puis-je obtenir de l'aide pour gérer le curseur ou un exemple de code pour obtenir l'historique du navigateur?
Pas vraiment une réponse mais je peux vous dire ce que j'ai fait.
Je clone d'abord le repo du navigateur et j'essaie de reproduire comment ils obtiennent l'historique. Et j'ai commencé à avoir:
Refus d'autorisation: lecture de com.Android.browser.BrowserProvider
J'ai donc ajouté:
<uses-permission Android:name="com.Android.browser.permission.READ_HISTORY_BOOKMARKS" />
Mais cela me donne toujours la même erreur. Je l'ai recherché sur Google et j'ai trouvé ceci Accès aux données avec Android curseurs .
J'espère que cela aide.
managedQuery est obsolète, utilisez plutôt getContentResolver, utilisez le code suivant:
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();
}
}
Ajoutez également des autorisations à l'aide de
<uses-permission Android:name="com.Android.browser.permission.READ_HISTORY_BOOKMARKS" />
Pour Lollipop ou version antérieure
Je peux obtenir l'historique en utilisant le code suivant:
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();
}
}
Cet article est un peu ancien, mais voici une autre solution simple pour obtenir des données relatives aux fournisseurs de contenu Bookmark
et Search
dans Android:
Utilisez cette lib: https://github.com/EverythingMe/easy-content-providers
Obtenez tous les signets:
BrowserProvider browserProvider = new BrowserProvider(context);
List<Bookmark> bookmarks = browserProvider.getBookmarks().getList();
Chaque signet a tous les champs, vous pouvez donc obtenir toutes les informations dont vous avez besoin: titre, URL, visites, ... =
Obtenez tout Historique de recherche :
List<Search> searches = browserProvider.getSearches().getList();
Il fonctionne avec des listes ou un curseur et là un exemple d'application pour voir à quoi il ressemble et fonctionne.
En fait, il existe un support pour tous les fournisseurs de contenu Android comme: Contacts, SMS, Appels, ... Doc complet avec toutes les options: https://github.com/EverythingMe/easy-content-providers/wiki/Android-providers
J'espère que cela a aidé :)
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;
}