如何在 Android Marshmallow (API>=23) 中获取 Chrome 历史记录和书签?
Posted
技术标签:
【中文标题】如何在 Android Marshmallow (API>=23) 中获取 Chrome 历史记录和书签?【英文标题】:How to get Chrome History & Bookmarks in Android Marshmallow (API>=23)? 【发布时间】:2016-02-02 20:36:09 【问题描述】:直到 API 级别 22(即直到 Lollipop),有一种方法可以使用权限 com.android.browser.permission.READ_HISTORY_BOOKMARKS
从 Chrome 应用程序读取历史记录和书签(如 this thread 所示)。
现在,在 Android API=23 Marshmallow 中,由于整个浏览器书签系统已经在 Marshmallow (changes here) 中被删除,上述方法不再有效。
Here is the thread 这说明了为什么这不再可能了。
到目前为止,在我的研究中,我还没有发现好消息。谷歌肯定已经杀死了系统书签功能(here & here),问题是 Chrome 浏览器是否会以任何方式暴露它?
在 Android Marshmallow 中是否有替代/方式从 Chrome 中读取书签和历史记录(即使特定于 Chrome 也会回答这个问题)?
【问题讨论】:
请不要混淆google-chrome和google-chrome-app 如果您随时找到答案,请告诉我。我有同样的问题:) permission READ_HISTORY_BOOKMARKS is not working on API 23的可能重复 【参考方案1】:与引用的文档相反,com.android.browser.permission.READ_HISTORY_BOOKMARKS
仍然由框架定义,并且仍然可以由应用程序获取。不幸的是,在 Marshmallow 及更高版本上,Chrome 会检查不同的权限,这是常规应用程序不允许获得的权限。出于兼容性原因,当权限检查不可避免地失败时,Chrome 会返回零行而不是抛出 SecurityException
。
你可以在这里查看源代码:
query()
调用hasReadAccess()
,后者调用hasPermission("com.android.browser.permission.READ_HISTORY_BOOKMARKS")
,它在 API >= M 上忽略权限参数,而是检查com.android.chrome.permission.READ_WRITE_BOOKMARK_FOLDERS
。此权限仅限于系统应用和使用 Google 密钥签名的应用。
【讨论】:
那么,这是什么意思?其他应用程序能否读取 Chrome for Android 的历史记录? @Melab 有人找到解决方案了吗?【参考方案2】:您可以通过键入查看您的历史记录
Chrome://history
作为您的网址。
【讨论】:
我的意思是 - 从 Android/Java API 以编程方式编写,即为它编写一个应用程序。 @user1406716 你有没有找到解决这个问题的方法?如果是这样发布答案! :) 不,我没有。 @j__m 的回答似乎很有希望,但需要尝试一下。以上是关于如何在 Android Marshmallow (API>=23) 中获取 Chrome 历史记录和书签?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android Marshmallow 平台上高效开发系统应用?
如何在 Android Marshmallow 上的 Google 地图上显示当前位置?
如何以编程方式打开 Android 6.0 (Marshmallow) 上特定应用的权限屏幕?
如何从 Android 版本 Marshmallow 开始请求从 Android 拨打电话的权限?