Android - 查询所有彩信&来自特定Thread_ID的SMS

时间:2013-10-10 03:03:40

标签: android sms android-contentprovider mms android-cursor

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

经过多天的搜索后,我无法在StackOverflow上找到答案。

我目前正在收到这样的所有邮件:

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

但这只会返回短信(没有彩信)。我尝试将content://sms/更改为content://mms-sms/,但这是无法识别的。我还尝试查询content://mms-sms/conversations/xxx其中xxx是thread_id,但这只是给了我一个NullPointerException。

我一直在寻找解决方案。其他短信应用程序,如Go SMS和Sliding Messaging可以完美地完成,但我似乎无法弄明白......

1 个答案:

答案 0 :(得分:2)

null的{​​{1}}投影参数是导致content://mms-sms/conversations/xxx的原因---如果您明确地投影所需的列(例如NullPointerException),它应该有效很好。

但是,{"address", "body", "date"}的查询并不是根据发送消息的地址严格选择的;如果你想要,你应该查看thread_id(忽略你发送的消息)并使用选择参数来查询你感兴趣的地址:

content://sms/inbox