日期:2014-05-16  浏览次数:20442 次

Android短彩信数据库研究

anroid的彩信短信是使用sqlite数据库存储的。要做短彩方面的研发,比如添加,删除,修改,监听等,对数据库的数据表了,字段了,数据了是要有一个比较清楚的了解的。android的厂商众多,而某些的模块的数据库,在一些重大历史版本更新中,也可能会有或多或少的变化,而同时各大厂商在做深度开发时,也往往会对原生态的数据库做一些添加和修改。这给我们开发带来了不少的麻烦。比如前段时间搞的新短信监听,在某些手机上,无法获得,某些手机上,又获得的不对,归根结底是android不同版本的数据库起了变化,而有些厂商为了通信的安全,也修改了数据库。


使用SQLite数据库浏览器,可以十分清楚的了解彩信数库。如下图,打开HTC的短信数据mmssms.db,得到数据表如下:



数据库中有HTC自已订制的数据表。打开sms数据表,如下,可以看到数据表内所有的字段:




消息数据库mmssms.db可以使用命令adbpull /data/data/com.android.providers.telephony/databases/mmssms.db获取,路径/data/data/com.android.providers.telephony/databases/mmssms.db中包括了几乎全部的手机使用到的数据库,如果需要通话或者其他,同样是可以的。


如果你无法使用 adbpull命令,需要先执行下adbremount,如果你连adbremount也不行,大约可能是没有ROOT的原因,有关ROOT,你懂的,不多说。如果确认了手机已经ROOT,adb remount却不能执行,可以试试下面的方法,先进入adbshell,然后:

shell@android:/$ su
shell@android:/ # mount -o rw,remount -t yaffs2/dev/block/mtdblock3 /system
shell@android:/ # chmod 777 /system
shell@android:/system/app # exit
shell@android:/ $ exit


如果adbremount成功了,担adbpull不行,还可以使用