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中Bookmark
和Search
内容提供者相关的数据:
使用这个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
希望它帮助:)