【问题标题】:can we get chrome browsing history/bookmarks in our android app我们可以在我们的 android 应用程序中获取 chrome 浏览历史记录/书签吗
【发布时间】:2012-10-19 16:40:37
【问题描述】:

我们能否像使用 READ_HISTORY_BOOKMARKS 权限在默认浏览器中一样获取 chrome 浏览历史记录/书签? PS:我只想知道有没有可能?

【问题讨论】:

  • 我认为答案是否定的。我说的是正常情况,即没有 root 访问权限,每个应用程序都有单独的数据保存在 /data 文件夹中,并且没有对其他应用程序文件夹的访问权限。但是,如果您有 root 访问权限,那就另当别论了。

标签: android android-contentprovider android-browser google-chrome-app


【解决方案1】:

是的,很有可能。 使用这个 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();
    }
}

尚未测试代码是否有错误,但它应该可以正常工作。重要的是知道要使用的 uri。阅读 thisthis 可能会有所帮助。

【讨论】:

  • 如何确定哪个 URI 是书签的好 URI(必须使用哪个)?我使用 Browser.BOOKMARKS_URI (= Uri.parse("content://browser/bookmarks")): 在大多数设备上都可以正常工作,但是在某些设备上(可能默认使用 Chrome),它会触发“java.lang .IllegalArgumentException: Unknown URL content://browser/bookmarks" 在这种情况下我应该尝试 Chrome URI 吗? "content://com.android.chrome.browser/bookmarks" 知道哪个书签 URI 是(给定设备/配置)上使用的(好)书签 URI 的正确方法是什么?
  • 这不再适用于 Marshmallow:developer.android.com/about/versions/marshmallow/…
  • 只有在设备版本低于 Marshmallow 的情况下才能运行此代码?因为似乎 BookmarkColumns 已从框架中删除。
猜你喜欢
  • 2013-09-24
  • 1970-01-01
  • 2017-05-11
  • 2013-11-18
  • 2021-08-21
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多