Android阅读浏览器历史

我想在Android手机中阅读浏览器历史logging。

我已经做了一些文件阅读,然后我知道,我们可以通过android.provider.Browser类阅读浏览器的历史。 它有:

final static Cursor getAllVisitedUrls(ContentResolver cr) 

…返回Cursor方法

我可以得到帮助处理光标,或任何示例代码来获取浏览器的历史?

不是一个真正的答案,但我可以告诉你我做了什么。

我首先克隆浏览器回购,并尝试重现他们如何获得历史。 我开始得到:

权限拒绝:阅读com.android.browser.BrowserProvider

所以我补充说:

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

但它仍然给我同样的错误。 我谷歌,我发现这与Android游标访问数据 。

希望它有帮助。

managedQuery已被弃用,所以请改用getContentResolver,使用下面的代码:

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

还使用添加权限

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

对于棒棒糖或更早

我能够通过使用以下代码获取历史logging:

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

这篇文章有点旧了,但这里是另一个简单的解决scheme,用于获取与Android中BookmarkSearch内容提供者相关的数据:

使用这个lib: https : //github.com/EverythingMe/easy-content-providers

获取所有书签:

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

每个书签都有所有的字段,所以你可以得到你需要的任何信息: 标题,url,访问,…

全部search历史logging:

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

它适用于列表或光标,并有一个示例应用程序,看看它的外观和工作。

事实上,所有的Android内容提供商都支持: Contacts(联系人),SMS(短信),Calls(电话)…具有所有选项的全文档: https : //github.com/EverythingMe/easy-content-providers/wiki/Android-providers

希望它帮助:)