zoukankan      html  css  js  c++  java
  • 删除草稿信息之后 threads表的数据没有发生变化

    现象描述:

    无论是用_id来删除草稿信息,还是用thread_id和type来删除草稿,草稿都可以删除掉,但是threads表中的数据都没有发生变化。

    private void removeDraftMessage() {
        if(draftMsg == null) {
            return;
        }
        /*getContentResolver().delete(Sms.CONTENT_URI,
                "_id=" + draftMsg.getMessageId(), null);*/
        getContentResolver().delete(
                Sms.CONTENT_URI,
                "thread_id=" + mThreadId + " and type="
                        + Sms.MESSAGE_TYPE_DRAFT, null); // 红色的两种删除方法都无法将信息从数据库中删除干净。

        draftMsg = null;
    }

    网上寻求资料,也有类似的提问,有网友答复:

    那你要关注下threads表是如何更新,印象中threads只有数据第一次写入是通过代码完成,其它的操作是通过触发器实现的,看下threads表相关的触发器吧,相关的触发器创建代码在
    MmsSmsDatabaseHelper.java (packagesapps elephonyprovidersrccomandroidproviders elephony)
    猜测你的问题可能是sms表的记录删除后并没有触发threads的触发器,可能是哪里条件不满足吧,多调试下吧

    android系统提供的代码。

    D:android4.2.2androidpackagesappsMmssrccomandroidmmsuiComposeMessageActivity.java

    ComposeMessageActivity类所在包是:package com.android.mms.ui;

    终于调试出来了。使用这个方法可以删除sms表中的数据,同时更新threads表中的数据。

    Uri uri = Uri.withAppendedPath(Sms.CONTENT_URI,
            String.valueOf(draftMsg.getMessageId()));
    getContentResolver().delete(uri, null, null);

    具体原因就不得而知了。有知道的员友不吝赐教。

  • 相关阅读:
    程序员获取编程灵感的10 种方式
    修改Windows远程桌面3389端口
    修改Windows远程桌面3389端口
    JS 开发常用工具函数
    JS 开发常用工具函数
    IT公司老板落水,各部门员工怎么救
    IT公司老板落水,各部门员工怎么救
    如何优雅地给妹子优化电脑(Windows)?
    如何优雅地给妹子优化电脑(Windows)?
    程序员,你恐慌的到底是什么?
  • 原文地址:https://www.cnblogs.com/fengzhblog/p/3196388.html
Copyright © 2011-2022 走看看