• 删除草稿信息之后 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);

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

  • 相关阅读:
    php 发送超大数据处理
    Linux 忘记了mysql 密码
    利用mysqldump 实现每天备份方案
    window 下忘记了mysql 密码的解决方法
    MySQL添加字段和修改字段的方法
    php 即使客户端或者服务器断开(如关掉浏览器)脚本也可以继续执行
    PHP面向对象05_接口与多态
    PHP面向对象06_异常处理
    PHP面向对象07_PDO
    PHP面向对象之魔术方法复习
  • 原文地址:https://www.cnblogs.com/fengzhblog/p/3196388.html
Copyright © 2020-2023  润新知