状况:
“短信还原”模块无法“正常”还原
逻辑
⑴短信备份模块:创建内容提供者,访问存储短信的数据库表,将sms表下的address,body,_id,date,type字段用smsInfo对象
去接收,创建List集合去接收所有的smsInfo对象,即获得所有的短信
⑵创建XmlSerializer和FileOutputStream输入流,将集合中的所有短信写入xml文件,如下图xml文件(_id为数据库的自增长字段)
⑶短信还原模块:如上文件已经在手机上存储以后,读取xml文件,并且将短信息已List集合接收,倒转List集合中元素的顺序,在for
循环中依次插入,如下代码
分析:
因为在短信备份的过程中,写入的xml文件是从头部插入,所以在数据库中原本_id的顺序为1,2,3的短信,xml文件变成了3,1,于是
将List集合中的元素顺序反转(如不反转,把短信全部删除再还原,则会发生还原了后面一半的短信,前面的无法还原),在短信完全
删除的情况下,可成功还原全部短信,但是在删除了id为1和3的短信,保留id为2的短信再点击还原,发现只还原了id为3的短信,导
出数据库
id为1的短信插入数据库以后,自增长id变为了3,所以导致id为3的短信无法插入
最终解决方案:未完