短信还原的注意点

状况:

“短信还原”模块无法“正常”还原

逻辑

⑴短信备份模块:创建内容提供者,访问存储短信的数据库表,将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的短信无法插入


最终解决方案:未完

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念