我们可以在我们的Android应用程序中获取Chrome浏览历史记录/书签

Kri*_*tia 12 android android-browser android-contentprovider google-chrome-app

我们可以使用READ_HISTORY_BOOKMARKS权限获取我们在默认浏览器中获取的Chrome浏览历史记录/书签吗?PS:我只是想知道它有可能吗?

Adi*_*tya 14

是的,这是非常可能的.使用此uri:content://com.android.chrome.browser/bookmarks而不是Browser.BOOKMARKS_URI

String[] proj = new String[] { Browser.BookmarkColumns.TITLE,Browser.BookmarkColumns.URL };
Uri uriCustom = Uri.parse("content://com.android.chrome.browser/bookmarks");
String sel = Browser.BookmarkColumns.BOOKMARK + " = 0"; // 0 = history, 1 = bookmark
Cursor mCur = getContentResolver().query(uriCustom, 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)

没有测试代码的错误,但它应该工作正常.重要的是要知道要使用的uri.读这个,可能会有所帮助.

  • 这不再适用于Marshmallow:https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-bookmark-browser (7认同)
  • 如何确定WHICH URI是书签的好词(必须使用哪一个)?我使用Browser.BOOKMARKS_URI(= Uri.parse("content:// browser/bookmarks")):在大多数设备上工作正常,但在某些设备上(可能使用Chrome作为默认设置),它会触发"java.lang" .IllegalArgumentException:未知的URL内容://浏览器/书签"在这种情况下我应该尝试使用Chrome URI吗?"content://com.android.chrome.browser/bookmarks"知道哪个书签URI是(好的)用户(给定设备/配置)的正确方法是什么? (3认同)
  • 仅当设备版本小于棉花糖时才可以运行此代码吗?因为似乎BookmarkColumns已从框架中删除。 (2认同)