You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用消息送达状态检测及WhatsApp消息状态获取方案咨询

1. 自研Android应用内实现消息送达状态检查与展示

要实现这个功能,核心是建立消息状态的双向确认机制,具体步骤如下:

  • 给每条发送的消息分配唯一message_id,本地数据库存储消息核心字段:message_id、接收者ID、内容、状态(枚举值:待发送、已发送、已送达、已读)
  • 消息状态流转流程:
    1. 客户端调用后端接口发送消息,后端成功接收并返回确认后,将本地消息状态更新为「已发送」
    2. 后端将消息推送给目标用户设备,目标设备应用接收到消息后,立即向后端发送送达确认请求(携带对应message_id)
    3. 后端收到送达确认后,通过WebSocket/Firebase Cloud Messaging等方式,给发送方设备推送「消息已送达」通知
    4. 发送方客户端收到推送后,更新对应message_id的消息状态为「已送达」,并在UI上展示(比如用双对勾图标区分已发送/已送达状态)
  • 已读状态扩展:目标用户打开消息后,客户端向后端发送「已读确认」,后续流程和送达状态一致,更新本地状态为「已读」并展示(比如蓝色双对勾)

示例代码片段(本地数据库更新状态):

// 更新消息状态
fun updateMessageStatus(messageId: String, newStatus: MessageStatus) {
    val db = Room.databaseBuilder(context, AppDatabase::class.java, "message_db").build()
    db.messageDao().updateStatus(messageId, newStatus.name)
}

// 枚举定义消息状态
enum class MessageStatus {
    PENDING, SENT, DELIVERED, READ
}

2. 通过Android Activity获取WhatsApp消息的送达/已读状态

不可行,原因如下:

  • WhatsApp未开放任何公开API供第三方应用获取消息的送达/已读状态,这类数据属于用户隐私范畴,官方不会对外暴露
  • Android系统的权限机制严格限制跨应用访问私有数据:从API 23(Android 6.0)开始,即使申请了权限,也无法直接读取其他应用的私有数据库或内部状态
  • 非官方手段(如AccessibilityService读取屏幕内容)属于违反隐私政策和WhatsApp服务条款的行为,不仅无法通过Google Play审核,还可能涉及法律风险,仅教育目的也不建议尝试

内容的提问来源于stack exchange,提问作者Shanthini Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 18:39:59