0

我想使用以下内容更新短信对话线程的“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=? 哪里 thread_id=334

谢谢你的帮助

4

1 回答 1

4

无法直接更新线程的计数、片段等。但我可以帮助你解决你的实际问题。android代码中实际上存在一个错误,这是您问题的根源。当您尝试通过以下方式删除时 -

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

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

解决方案是这样做

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

对于那些好奇这个错误是什么的人——当你使用方法 1 删除时,Android 代码会做一些愚蠢的事情——

  1. 删除查询给出的所有消息。
  2. 获取与查询给出的消息相关联的所有对话线程并更新它们。哇哇?!步骤 1 刚刚删除了查询给出的消息,因此,步骤 2 总是会为与这些消息关联的线程返回一个空集,因为所有消息都已被删除。

希望这可以帮助。

于 2012-09-08T18:02:20.813 回答