4

如何查询特定地址发送的所有消息?

经过几天的搜索,我在 StackOverflow 上找不到我的答案。

我目前收到这样的所有消息:

Uri uri = Uri.parse("content://sms/");
Cursor managedCursor = getContentResolver().query(uri, null, ("thread_id = " + ThreadID), null, "date ASC");

但这只会返回 SMS 消息(没有 MMS)。我尝试更改content://sms/为,content://mms-sms/但无法识别。我还尝试查询thread_idcontent://mms-sms/conversations/xxx在哪里xxx,但这只是给了我一个 NullPointerException。

这几天我一直在寻找解决方案。Go SMS 和 Sliding Messaging 等其他 SMS 应用程序可以完美地做到这一点,但我似乎无法弄清楚......

4

1 回答 1

3

null投影参数content://mms-sms/conversations/xxx是导致---如果NullPointerException您明确投影所需的列(例如,{"address", "body", "date"}),它应该可以正常工作。

但是,查询依据thread_id并不是严格根据发送消息的地址进行选择;如果需要,您可能应该查看content://sms/inbox(忽略您发送的消息)并使用选择参数来查询您感兴趣的地址:

Uri uri = Uri.parse("content://sms/inbox");
Cursor managedCursor = getContentResolver().query(uri, null, "address=?", {targetedAddress}, "date ASC");
于 2013-12-22T11:10:49.510 回答