删除草稿信息之后 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 (packages\apps\telephonyprovider\src\com\android\providers\telephony)
猜测你的问题可能是sms表的记录删除后并没有触发threads的触发器,可能是哪里条件不满足吧,多调试下吧
android系统提供的代码。
D:\android4.2.2\android\packages\apps\Mms\src\com\android\mms\ui\ComposeMessageActivity.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);
具体原因就不得而知了。有知道的员友不吝赐教。