如何只在会话视图中使用最新的短信?

时间:2017-02-06 13:25:46

标签: android

我正在尝试创建一个短信会话列表。我正在使用此代码来获取游标:

Cursor cursor = activity.getContentResolver().query(Uri.parse("content://sms/inbox"), null, null, null, null); 

问题是当我使用光标时,我从一个联系人那里收到多条消息。我试图只收到所有联系人的最新消息,以便我可以在recyclerview中将它们显示为对话列表。

提前致谢!

1 个答案:

答案 0 :(得分:1)

查询"content://sms/conversations" URI(Telephony.Sms.Conversations.CONTENT_URI)会返回每个会话的摘要,其中"snippet"列(Telephony.Sms.Conversations.SNIPPET)是每个会话中的最后一条消息。

此查询还会返回"msg_count"列(Telephony.Sms.Conversations.MESSAGE_COUNT) - 这是非常明显的 - 以及"thread_id"列(Telephony.Sms.Conversations.THREAD_ID),可以是用于通过查询附加到会话URI的ID来检索完整的会话。例如:

String threadId = ...
Uri convoUri = Telephony.Sms.Conversations.CONTENT_URI
               .buildUpon().appendPath(threadId).build();

请注意,这些查询只会返回短信。如果您也想要彩信,Telephony.MmsTelephony.MmsSms也有类似的URI。