如何更新android短信对话线程?

时间:2012-08-19 02:37:31

标签: android sms android-contentresolver

我想使用以下内容更新短信会话线程的“message_count”列和“snippet”列:“content:// mms-sms / conversations”。因为从会话线程中删除SMS时不会更新代码段和消息计数。 但我收到此错误消息:“MmsSmsProvider不支持此URI的删除,插入或更新” 以下是我的代码:

ContentValues values = new ContentValues();
values.put("message_count", ent.getValue().getCount());
values.put("snippet", ent.getValue().getSnip());

Uri conUri = Uri.parse("content://mms-sms/conversations");
getContentResolver().update(conUri, values, null, null);

我也尝试这样:

Uri conUri = Uri.parse("content://mms-sms/conversations" + "/" + threadid);
getContentResolver().update(conUri, values, null, null);

但我得到的是另一条错误消息:没有这样的列:message_count :,编译时:UPDATE pdu SET message_count = ?, snippet =? WHERE thread_id = 334

感谢您的帮助

1 个答案:

答案 0 :(得分:4)

无法直接更新线程的count,snippet等。但我可以帮助你解决实际问题。 android代码中确实存在一个错误,它是您问题的根源。当您尝试以下列方式删除时 -

getContentResolver().delete("content://sms/", "_id=?", new String[] {id});

Android不会更新与该短信相关联的线程。

解决方案就是这样做

getContentResolver().delete("content://sms/" + id, null, null);

对于那些好奇的人来说,错误是什么 - 当您使用方法1 -

删除时,Android代码会像这样做一些愚蠢的事情
  1. 删除查询提供的所有邮件。
  2. 获取与查询提供的消息关联的所有会话线程并更新它们。哇哇?第1步刚刚删除了查询给出的消息,因此,第2步总是返回与这些消息关联的线程的空集,因为所有消息都已被删除。
  3. 希望这有帮助。