2010-04-05 7 views
31

Je veux lire l'historique du navigateur dans le téléphone Android.Android lire l'historique du navigateur

J'ai fait de la lecture de document, puis je viens de savoir que nous pouvons lire l'histoire 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?

Répondre

29

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

Je clone d'abord le browser repo et essaie de reproduire comment ils obtiennent l'historique. Et j'ai commencé à:

Permission refusée: lecture com.android.browser.BrowserProvider

J'ajouté:

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

Mais il est encore me donne la même erreur . Je google et je l'ai trouvé Accessing Data With Android Cursors.

Espérons que ça aide.

+1

L'autorisation devrait être: '' Cela fonctionne alors. – Firebrandt

+0

@Firebrandt: Je viens de le réparer. Merci. – Macarse

+0

Est-ce que cette méthode nécessite un accès root, ou juste cette permission unique? – ethanpil

9

Pour Lollipop ou plus tôt

Je suis en mesure d'obtenir l'histoire 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(); 
       } 
      } 
+0

comment obtenir le temps ie quand on ouvre le site informations – Venkat

+2

Log.v ("urlIdx", mCur.getString (Browser.HISTORY_PROJECTION_DATE_INDEX)); essayez ceci. Pour plus d'informations s'il vous plaît visitez http://developer.android.com/reference/android/provider/Browser.html –

+1

Cela ne fonctionnera plus dans Marshmallow: https://developer.android.com/about/versions/marshmallow/ android-6.0-changes.html # behavior-bookmark-browser – user1406716

18

ManagedQuery a été dépréciée afin d'utiliser getContentResolver à la place, utilisez le code suivant:

Ajouter également des autorisations en utilisant

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

cette réponse fonctionne! J'ai également fait un exemple basé sur cette réponse https://github.com/shanwu/shanwu_coding_base/tree/bookmark_record_example – shanwu

+1

[La plupart des choses liées aux signets ont été supprimées dans l'API niveau 23 (Android 6.0+)] (https: // développeur .android.com/about/versions/marshmallow/android-6.0-changes.html # behavior-bookmark-browser) – Aashish

3
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; 
} 
+0

[La plupart des choses liées à Bookmarks ont été supprimées dans API niveau 23 (Android 6.0+)] (https: // developer .android.com/about/versions/guimauve/android-6.0-changes.html # behavior-bookmark-browser) – Aashish

3

Ce poste est un peu vieux, mais voici une autre solution facile pour obtenir des données relatives à Bookmark et Search fournisseurs de contenu dans Android:

Utilisez cette lib: https://github.com/EverythingMe/easy-content-providers

Obtenez tous favoris:

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

Chaque Bookmark a tous les domaines, de sorte que vous pouvez obtenir toute information dont vous avez besoin: titre, url, visites, ...

Obtenez tous Recherche histoire:

List<Search> searches = browserProvider.getSearches().getList(); 

Il fonctionne avec des listes ou curseur et là un exemple d'application pour voir à quoi cela ressemble et fonctionne.

En fait, il y a un soutien pour tous les fournisseurs de contenu Android comme: les contacts, SMS, appels, ... doc complète avec toutes les options: https://github.com/EverythingMe/easy-content-providers/wiki/Android-providers

Espoir il a aidé :)

Questions connexes