热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android短彩信数据库研究

P{margin-bottom:0.21cm;}A:link{}anroid的彩信短信是使用sqlite数据库存储的。要做短彩方面的研发,比如添加,删除,修改,监听等,对数据库的数据表了

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不行,还可以使用 chmod777修改databases,如果仍然无法成功。只能使用必杀技了。首先检查下手机是否ROOT,如果了没有ROOT,先ROOT,如果ROOT了,可以在手机上安装RE管理器,使用这个超级的文件管理工具,把所需要的数据复制到存储卡或者其他可用空间上,然后你懂的,把复制的文件移到电脑上,就可以研究了。


如果把所有的方法都试过了,仍然前路漫漫,困难重重,那就换一以手机试试吧。我觉得判断一个机子是否ROOT成功应该比判断一台机子是不是android智能机更有难度。


如果不巧你无法获得SQLite数据库浏览器,其实如果安装了android的ADK,相应的也会有一个叫sqlite3的命令行程序可以使用。


输入.help可以看到命令列表。

输入sql语句createtable user(username text primary key, password text); 建一张user

输入sql语句insertinto user values("tianyou121", "123"); 插入一个用户。

输入sql语句select* from user; 可以查看user.

输入sql命令是记得结尾的';'号。


下面的代码摘自一个网友的博客,了解开发工具实现的原理,对于学习编程来说,也很有用的。代码摘自http://blog.csdn.net/tianyou121/article/details/6104317


  1#include
  2 #include
 3
  4 #include
  5
  6int myfunc(void *p, int argc, char **argv, char **argvv)
  7{
  8         inti;
  9         *(int*)p = 0;
 10        for(i =0; i  11        {
 12                printf("%s = %s ", argvv[i], argv[i] ? argv[i]:"NULL");
 13        }
 14        putchar('/n');
 15        return 0;
 16 }
 17
 18 int main(int argc,char *argv[])
 19 {
 20        sqlite3 *db;
 21        char *err =0;
 22        int ret =0;
 23        int empty =1;
 24
 25        ret = sqlite3_open("student",&db);
 26        if(ret !=SQLITE_OK)
 27        {
 28                fputs("/n",stderr);
 29                exit(1);
 30        }
 31         ret =sqlite3_exec(db, "select * from user;", myfunc, &empty,&err);
 32
 33        if(ret != SQLITE_OK)
 34        {
 35                fputs(err,stderr);
 36                fputs("/n",stderr);
 37                sqlite3_close(db);
 38                exit(1);
 39        }
 40
 41        if(empty)
 42        {
 43                fputs("table student is empty/n",stderr);
 44                exit(1);
 45        }
 46
 47        sqlite3_close(db);
 48
 49        return 0;
 50 }

保存文件为sqlite3_t.c和数据库文件放在一个目录下。
gcc编译:gcc-o sqlite_t sqlite3_t.c -lsqlite3

记得加上-lsqlite3指定库文件,否则编译不通。

./sqlite_t

可以看到user表中用户信息。

可以使用多表联合查询来研究短彩信数据库,甚至修正数据库的错误,我的手机库有些网络彩信显示号码有误,通过联合查询可以比较方便的发现这些错误。

selecttable1.abc from canonical_addresses, where table1.xxx=table2.xxx;



参考:

http://blog.csdn.net/tianyou121/article/details/6104317

http://blog.sina.com.cn/s/blog_74dfa9f401017s69.html


免费短信测试:

http://www.dailysms.us/index.php?on=sms


推荐阅读
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
    createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • C# 中 SQLite 报错:在 "\\s\\" 附近出现语法错误,如何解决? ... [详细]
  • 为了确保数据库的高效运行,本文介绍了一种方法,通过编写定时任务脚本来自动清理 `order` 表中状态为 0 或为空的无效订单记录。该脚本使用 PHP 编写,并设置时区为中国标准时间,每 10 分钟执行一次,以保持数据库的整洁和性能优化。此外,还详细介绍了如何配置定时任务以及脚本的具体实现步骤。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
author-avatar
5257wals_220
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有