本来一般备份恢复短信都应该判断重复的,不过 XT711 自带的备份恢复程序比较垃圾,恢复时直接导致重复,我打算自己动手丰衣足食
不过也还算比较简单,几个 sql 查找重复的语句就解决了
- 先做准备工作,什么下 adb 程序、root、开调试模式、下个 Navicat 之类的
adb pull /data/data/com.android.providers.telephony/databases/mmssms.db d:\
导出短信DELETE FROM sms WHERE "_id" NOT IN ( SELECT min("_id") FROM sms GROUP BY date, address, body )
删除所有其它重复短信adb push d:\mmssms.db /data/data/com.android.providers.telephony/databases/mmssms.db
再把短信数据库弄进去- 用 chown 把 mmssms.db 的用户名和组改成和 com.android.providers.telephony 一样,否则很有可能手机会报错
还有几个其它查询,可以用来做加减法
SELECT count(*) FROM sms
查询所有短信数量SELECT min("_id") AS id, address, date, body, count(*) AS 记录数 FROM sms GROUP BY date, address, body ORDER BY id
查找出所有唯一短信,右下角显示有多少条SELECT count(*) FROM sms WHERE "_id" IN( SELECT min("_id") FROM sms GROUP BY date, address, body HAVING count(*) = 2)
查询重复了一次的短信有多少条,后面的数字直接改查询其它SELECT count(*) FROM sms WHERE date IN ( SELECT date FROM sms GROUP BY date, address, body HAVING count(*) =2 )
查询重复一次的所有短信,一样的改数字查询其它UPDATE threads SET message_count=(SELECT count(*) FROM sms WHERE sms.thread_id=threads."_id")
这句可以更新会话模式短信数量
sms 表保存了所有的短信,threads 表是会话模式用的
说两句