Android接收短信意图:获取消息ID或线程ID

Noa*_*ert 6 android telephony android-intent smsmanager

我已经注册了一个Broadcast侦听器来接收android.provider.Telephony.SMS_DELIVERIntent动作.

我似乎能够得到这个新消息的正文和发件人电话号码.

但是,我无法获取此新消息的消息ID或线程ID.我找到的唯一方法是在消息和会话表中搜索匹配的内容.但这似乎有点混乱,我觉得应该有一个更简洁的方式.

旁注:
是否有一些我错过的短信文档?因为很多SMS api似乎都没有记录.

Dav*_*ser 4

SMS 中没有消息 ID 或线程 ID。每条短信都是一个数据包,完全独立于所有其他短信。在 Android 中,有一个标准 SMS 应用程序,它将 SMS 存储在数据库中,并使用一些不包含在 SMS 消息本身中的标准来“线程”对话。然而,第三方也可以构建以完全不同的方式管理消息的 SMS 应用程序。这在很大程度上取决于管理 SMS 的特定应用程序的概念和实现。这也是为什么没有太多关于 SMS 系统的文档的原因。Android 中可用的 API 非常低级且非常基础。其他应用程序构建在此之上。

  • 我们过去就这么做过。您可以在收到传入消息“Intent”后等待一定的时间(可能是500毫秒左右),然后检查短信数据库。您可能需要延迟才能做到正确,但这应该会让您更接近目标。由于您处于“BroadcastReceiver”中,因此您实际上不能在那里等待。您需要启动另一个“Thread”或将“Runnable”发布到“Handler”来执行此操作。 (2认同)