想调用/data/data/com.android.providers.telephony/database/mmssms.db的短信信息,但是不知道怎么调用它。我的想法是把它复制到自己的程序的包的/database中,再用SQLiteOpenHelper打开它访问。请问这个能行么??怎么复制呢?不行的话怎么导出短信啊,我做的程序是把短信导出成文本文件存在sdcard里。求高手指点!!!

解决方案 »

  1.   

    怎么样直接访问?IO又怎么操作?可以获得File文件,但是怎么查询这个File文件?文件的读取方法貌似只有提供的FileReader,但是那个我用来读取它的时候是抛出异常的,不知道为什么。而且那样的话没法按照我的需要提取短信内容啊,这个文件里面有13张表,所以估计只能使用数据库访问或者系统自带的ContentResolver.query。
    先说下第一种,数据库访问我发现只能访问自己包的数据库,不能访问那个数据库。所以想把这个数据库文件复制到我的项目的包下。不知道怎么复制(文件操作io的复制好像是先读然后再写,但是如上文所述,我读取它都有异常是否可以二进制读取和写入,而完全不改变内容?或者android中文件操作的复制操作是如何实现的??)。还不知道复制过来的文件是否可以当做数据库文件来读取?
    第二种,用ContentResolver来读取。这个函数中query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)方法,Uri是“content://mms-sms”(网上查的,应该是没错的),但后面的那些参数怎么设置才能读取出我要的短信呢?用字段匹配么?SQLite数据库语言我不是很懂,是不是用列名等类似的东西加以限制??
      

  2.   

    弄好了,贴出来大家分享下!!
    就是用ContentResolver.query(....)
    Uri是"content://sms/"
    projection写String[] myStirng{"person","body",...}
    其他写null
    然后按照ContentResolver提取的方法提取(分两步,大家懂的)
    恩,结贴了