32 votes

Historique du navigateur de lecture Android

Je veux lire l'historique du navigateur sur un téléphone Android.

J'ai lu des documents, puis je sais que nous pouvons lire l'historique du navigateur avec la 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?

29voto

Macarse Points 36519

Pas vraiment une réponse, mais je peux vous dire ce que j'ai fait.

J'ai d'abord cloner le navigateur de pensions et d'essayer de reproduire la façon dont ils obtiennent l'histoire. Et j'ai commencé à avoir:

L'autorisation de Déni: la lecture com.android.le navigateur.BrowserProvider

J'ai donc ajouté:

<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />

Mais encore, elle me donne la même erreur. Je recherche sur google et j'ai trouvé cet Accès aux Données Avec Android Curseurs.

Espérons que cela aide.

18voto

adi Points 2204

managedQuery est obsolète, utilisez donc getContentResolver à la place, 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 en utilisant

 <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />
 

9voto

Mitul Nakum Points 2796

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

3voto

naidu Points 95
  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;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X