【问题标题】:How to update android sms conversation thread?如何更新 android 短信对话线程?
【发布时间】:2012-08-19 02:37:31
【问题描述】:

我想使用以下内容更新短信对话线程的“message_count”列和“sn-p”列:“content://mms-sms/conversations”。因为当从对话线程中删除 SMS 时,sn-p 和消息计数不会更新。 但我收到此错误消息:“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=?,sn-p=? WHERE thread_id=334

感谢您的帮助

【问题讨论】:

    标签: android sms android-contentresolver


    【解决方案1】:

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

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

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

    解决办法就是这样做

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

    对于那些好奇这个错误是什么的人 - 当您使用方法 1 删除时,Android 代码会执行类似这样的愚蠢操作 -

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

    希望这会有所帮助。

    【讨论】:

    • 这不是一个错误,sms/mms URI 不是官方公共 api 的一部分,因此不会像其他 URI 一样工作。另外,您作为错误描述提供的内容不正确。 threads 表不是通过 URI 而是通过 sqlite db 中的触发器更新的。
    • 嗨@vikki,我在更新sms/conversations 时遇到了同样的问题,如何更新?你知道吗?在我从短信 Uri 中删除 sms 并放回后,我无法从对话中获取 sn-p,因为它为空,我尝试更新它但它没有返回这样的列,你知道如何解决这个问题吗?
    • @shayanpourvatan 也许我不明白你的情况,你说删除一条短信后,你添加另一个,然后添加后,snippet 列为空?
    • @vikki 感谢您的回答,我的情况类似于恢复,恢复一条短信后,sn-p 列为空。我只是从短信表中删除短信,但我认为这也从对话中删除了,我无法更新该值,
    • @shayanpourvatan 您需要确保短信实际上正在恢复/插入。我建议您使用具有 gui 的 sqlite 客户端直接检查数据库。我个人使用this firefox plugin。存储 SMS/MMS 的 sqlite db 可以在/data/data/com.android.providers.telephony/databases/ 找到,它被称为mmssms.db。查看这个 db 会让您更深入地了解 sms/mms 在 android 中的工作原理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    相关资源
    最近更新 更多