我已经把彩信的相关信息(pdu表、part表和addr表)从手机中取出来存在某个文件中,现在删除了手机中的彩信后,想恢复!读取备份文件中的信息,然后再向相关的表中插入,
如:contentResolver.insert(Uri.parse("content://mms"), contentValues);向pdu表中插入彩信的相关信息。
    contentResolver.insert(Uri.parse("content://mms/" + msg_id + "/addr"), contentValues1);向addr表中插入彩信相关信息
    contentResolver.insert(Uri.parse("content://mms/" + mid + "/part"),  contentValues3);向part表中插入彩信相关信息程序运行正常,LogCat未给出错误信息。用SQLite Maestro查看mmssms.db中的pdu表、part表和addr表,数据均显正常,但是现在的问题是手机界面上却无法显示出彩信。
另外我在往数据库中插入数据时,_id字段没有插入,因为插入记录时,系统自动生成该主键!其他字段都插入到数据库中了
    threads表我没有插入任何数据,该表应该是与其他表相关联的,我在插入短信时,同样没有向threads表中插入任何信息,但是threads表中的短信记录会自动生成。另外短信恢复实验成功!
    还有就是,目前我向数据库中插入的彩信是不含图片或音视频等文件的,只是单纯的插入一个带subject和文本信息的彩信!
    哪位大侠能给我一个思路,彩信相关数据在数据库中存在,但在手机界面打开Messaging程序并没有相关彩信显示...
有点怀疑是不是我还有些彩信数据没有插入到数据库中,或者先前就没有从数据库中取出保存到文件中,因为mmssms.db中的表很多。

解决方案 »

  1.   

    我也遇到相同的问题。想用getContentResolver().query(Uri.parse("content://mms"), new String[]{"insert into threads values('3','1289143470000','0','20','0','0','1,','0','0','0')--"}, null, null, null); 报错怎样才能显示彩信啊,纠结的很
      

  2.   

    插入短信的时候有个奇怪的现象,当不插入address项时,threads表不会生成短信。当插入了address项时,threads表就生成了,在手机上也能看到短信。但是在你浏览过短信后,address项的内容就会清空了。而且,当你用手机编辑1条短信,数据库中的address项也是空的,没有地址。(注:编辑的短信是存成草稿的)
      

  3.   

    短信的草稿是比较特殊的,在手机上编辑的时候必须有address,就是接收人的号码,如果没有,是不让保存为草稿的,但是输入address保存为草稿后,数据库中只有threads表保存了这个address,我先前发了个贴怎样查询到threads中的数据,后来在其他人的帖子中找到了这个方法,但是只是能查询到threads的数据,并不能进行插入、更新等操作,所以到此为止,能找到草稿短信的address,能做短信草稿箱的备份了!至于彩信,目前我放了放,等有空再探讨吧..
      

  4.   

    彩信表那个字段是消息内容啊
    短信时BODY
    看了彩信没有这个字段啊
      

  5.   

    我在做短信备份还原的,短信信息可以查出来了,但是恢复以后,短信程序没有显示恢复的短信,我只是简单的备份了sms这张表的所有内容,恢复也是直接把数据插入这张表!
    请问楼主,这个怎么回事啊?你的短信备份源码可否分享一下哪?qq1343929308!