删除草稿信息之后 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);
具体原因就不得而知了。有知道的员友不吝赐教。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架