freesky918 2023-05-16 23:33 采纳率: 0%
浏览 49
已结题

如何让app获取Android 浏览器访问历史记录,在API version大于23的版本上?

How to get browser history on android api version > 23 programmatically?

项目需要获取安卓手机的浏览器访问记录,但Android 6.0变更的时候把浏览器全局书签相关权限移除了,也就是说在6.0以上的版本(API 级别 大于等于23)的系统上没法调用Browser相关的方法区访问历史记录了。
那么还有没有其他什么方法,能让我的安卓APP获取手机浏览器的历史访问记录?

具体参见:https://developer.android.com/about/versions/marshmallow/android-6.0-changes?hl=zh-cn#behavior-bookmark-browser
浏览器书签变更
此版本移除了对全局书签的支持。android.provider.Browser.getAllBookmarks() 和 android.provider.Browser.saveBookmark() 方法现已移除。同样,READ_HISTORY_BOOKMARKS 权限和 WRITE_HISTORY_BOOKMARKS 权限也已移除。如果您的应用以 Android 6.0(API 级别 23)或更高版本为目标平台,请勿从全局提供程序访问书签或使用书签权限。您的应用应改为在内部存储书签数据。

  • 写回答

6条回答 默认 最新

  • 阿尔法斗士 2023-05-17 06:41
    关注

    基于GPT以及个人专业回答

    在Android 6.0以上的版本(API级别大于等于23)中,访问浏览器历史记录被禁止,无法使用 READ_HISTORY_BOOKMARKS 权限和 WRITE_HISTORY_BOOKMARKS 权限来获取浏览器数据。但是,仍然可以通过以下两种方式来获取浏览器历史记录:

    使用 AccessibilityService:通过实现 AccessibilityService 来监视用户的操作,在用户打开浏览器、访问网页时,将相关的信息记录下来,作为访问历史记录。

    使用 Content Provider API:使用 Android 系统提供的 Content Provider API,通过扫描浏览器数据库中的表来获取浏览历史数据。但是需要注意的是,Content Provider API 不稳定,而且不保证可以在所有设备上运行,且可能会在未来的版本中被移除。此外,使用这种方法需要获得系统的“com.android.browser.permission.READ_HISTORY_BOOKMARKS”权限,这与移除全局书签权限的初衷相违背。

    要么使用 AccessibilityService,要么使用 Content Provider API,都需要知道其风险和限制,并权衡后再决定是否使用。

    评论

报告相同问题?

问题事件

  • 系统已结题 5月24日
  • 创建了问题 5月16日

悬赏问题

  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 MATLAB中streamslice问题
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端