Android阅读浏览器历史记录

Mit*_*kum 32 browser android browser-history

我想阅读Android手机中的浏览器历史记录.

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

final static Cursor
getAllVisitedUrls(ContentResolver cr)
Run Code Online (Sandbox Code Playgroud)

...返回的方法Cursor.

我可以获得帮助来处理Cursor或任何示例代码来获取浏览器历史记录吗?

Mac*_*rse 29

不是答案,但我可以告诉你我做了什么.

我首先克隆浏览器repo并尝试重现他们如何获取历史记录.我开始得到:

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

所以我补充说:

<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />
Run Code Online (Sandbox Code Playgroud)

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

希望能帮助到你.

  • 这不再适用于Marshmallow:https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-bookmark-browser (11认同)

Adi*_*tya 18

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

还使用添加权限

<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />
Run Code Online (Sandbox Code Playgroud)

  • [API Level 23(Android 6.0+)中删除了与书签相关的大部分内容](https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-bookmark-browser) (3认同)

Mit*_*kum 9

对于棒棒糖或更早

我可以使用以下代码获取历史记录:

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();
                }
            }
Run Code Online (Sandbox Code Playgroud)

  • Log.v("urlIdx",mCur.getString(Browser.HISTORY_PROJECTION_DATE_INDEX)); 试试这个.有关详细信息,请访问http://developer.android.com/reference/android/provider/Browser.html (2认同)
  • 这将不再适用于棉花糖:https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-bookmark-browser (2认同)

sro*_*mku 5

这篇文章有点旧了,但这里有另一个简单的解决方案,用于获取BookmarkSearchAndroid 中的内容提供商相关的数据:

使用此库: https: //github.com/EverythingMe/easy-content-providers

获取所有书签:

BrowserProvider browserProvider = new BrowserProvider(context);
List<Bookmark> bookmarks = browserProvider.getBookmarks().getList();
Run Code Online (Sandbox Code Playgroud)

每个书签都有所有字段,因此您可以获得所需的任何信息: 标题、网址、访问次数……

获取所有搜索历史记录:

List<Search> searches = browserProvider.getSearches().getList();
Run Code Online (Sandbox Code Playgroud)

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

事实上,它支持所有 Android 内容提供商,例如:联系人、短信、通话…… 包含所有选项的完整文档: https: //github.com/EverythingMe/easy-content-providers/wiki/Android-providers

希望它有帮助:)