我正在尝试创建一个短信会话列表。我正在使用此代码来获取游标:
Cursor cursor = activity.getContentResolver().query(Uri.parse("content://sms/inbox"), null, null, null, null);
问题是当我使用光标时,我从一个联系人那里收到多条消息。我试图只收到所有联系人的最新消息,以便我可以在recyclerview中将它们显示为对话列表。
提前致谢!
答案 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.Mms
和Telephony.MmsSms
也有类似的URI。