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

Posted

技术标签:

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

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

【问题讨论】:

我认为答案是否定的。我说的是正常情况,即没有 root 访问权限,每个应用程序都有单独的数据保存在 /data 文件夹中,并且没有对其他应用程序文件夹的访问权限。但是,如果您有 root 访问权限,那就另当别论了。 【参考方案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。阅读 this 和 this 可能会有所帮助。

【讨论】:

如何确定哪个 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 已从框架中删除。

以上是关于我们可以在我们的 android 应用程序中获取 chrome 浏览历史记录/书签吗的主要内容,如果未能解决你的问题,请参考以下文章

Android 在Android手机上获取其他应用的包名及版本号

我们可以在不使用 android 的 GPS 的情况下获取上一个已知位置或大致位置吗?

Android 从电池视图中获取电池时间

Android中利用ContentResolver获取本地音乐和相册

在android中获取离子应用程序的开始和结束时间

我们可以从其他应用程序的 firebase 数据库中获取数据吗?