web-dev-qa-db-fra.com

Android lire l'historique du navigateur

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?

32
Mitul Nakum

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.

29
Macarse

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" />
18
Aditya

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();
                }
            }
9
Mitul Nakum

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é :)

4
sromku
  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;
}
3
naidu