java - Android 应用程序如何访问信使聊天?
问题描述
我想编写一个分析聊天的 Android 应用程序。对于每个信使,每个联系人,我想获取所有发送和接收的消息的列表(自安装我的应用程序以来)。这里的关键是我希望消息列表井井有条。我的应用程序应该支持尽可能多的信使。最好的方法是什么?
我研究并发现了几种访问信使消息的方法:
- 使用无障碍服务(相关:如何读取窗口内容(使用accessibilityService)和在Android 中使用draw over other app permission 来唤起UI?)
- 阅读带有辅助功能标签注释的其他应用程序的屏幕内容
- 警告:
- 信使需要正确实现可访问性
- 我必须过滤哪些文本块是相关的
使用
NotificationListenerService
- 获取收到消息的通知内容
- 警告:
- 只获取有通知的消息内容
- 除了他们的时间,没有给出消息的顺序
截屏并进行光学字符识别
- 警告:
- 可能疯了
- 警告:
当我收到消息时,我仍然需要订购它们。为此,我认为无障碍服务是我最好的选择,因为我可以在大多数消息中使用屏幕上的日期信息,以及它们在屏幕上的位置。
但是,仍然存在边缘情况。据我了解,无障碍服务只能看到当前屏幕上的内容。用户还可以在安装了应用程序的设备关机时使用另一台设备聊天。因此,一旦安装了应用程序的设备再次打开电源,应用程序可能无法看到设备关闭时写入的旧消息(直到用户再次向上滚动)。
我的假设正确吗?您知道我的应用程序读取/排序消息的更好方法吗?
解决方案
推荐阅读
- javascript - 使用 owl carousel 在触摸设备上滑动时禁用垂直滚动
- sql - 在连接两个表时需要帮助,但连接表中没有完全相同的信息
- angular - 如何正确处理角度路由订阅,然后将参数用于并行 http 请求
- c# - 组合框 ownerdrawfixed 删除项目 c#
- kettle - 无法从 Linux 命令行工具发现 Pentaho 存储库中的目录
- laravel - Laravel Nova Vue 组件未呈现
- php - 如何从 Wordpress 的新用户欢迎电子邮件中的密码链接中删除 <> 字符?
- signalr-hub - SignalR 异步集线器方法阻止客户端连接
- laravel - 是否可以使用单个路由通过控制器访问多个页面?
- wix - 在 Wix 引导程序中安装运行 .msi 的 .exe 包