Q: 如何读取存放在手机里面的短信?
2010-08-21 17:40
316 查看
Q: 如何读取存放在手机里面的短信?
A: 其实我们首先需要知道一点的是,android使用SQLite数据库中。短信也是一样,保存在SQLite的数据库里面,但是我们并不能直接访问这个数据库,我们要通过Content Provider来进行访问。首先我们看一下短信数据存放的位置,就在data/data/com.android.providers.telephony.databases.mmssms.db里面,这个地方存放着我们的短信和彩信数据。
我们把这个数据库导出来,点击中左边这个按钮,把它存到一个地方,然后我们就可以用SQLite打开这个文件来查看表的结构和里面的记录了。
我们可以看到,主要有下面的这些属性,其实大部分你可以猜出来的:
_id : 短消息ID
thread_id : 对话的序号
address : 发件人地址,也就是发给你的那个人的手机号码
person : 如果上面的手机号在你的联系人列表中存在的话,那么这个ID就是联系人的ID,否则是NULL
date : 发送或者接收的日期 long型
protocol : 彩信还是短信 0 短信 1 彩信
read : 是不是读过了 0 未读, 1 已读
status : 状态 -1接收,0 complete,64 pending, 128 failed
type : 发送还是接收的信息 1是接收到的,2是发出去的
body : 短消息内容
service_center : 短信服务中心号码编号
基本结构清楚了,我们就可以通过Provider来进行访问了。
这里需要注意的是,尽管我们知道数据库的准确地址,也知道是那个表,里面的字段也非常清楚,但是我们不需要直接访问,我们通过URI来进行访问。
短信收件箱对应的URI是content://sms/inbox
很简单吧,就是sms短信,然后inbox收件箱,类似,短信里面的URI分别是
content://sms/
content://sms/inbox
content://sms/sent
content://sms/draft
content://sms/outbox
content://sms/failed
content://sms/queued
接下来,我们就可以写一段代码读出所有的信息了,不过这个代码只用作演示,因为真的把所有的短信加到一起肯定会死机的。
主要操作其实就跟操作数据库一样,根据路径打开一个provider进行查询(Query),然后移动光标,对每次光标的移动进行操作,如取出字符串啊等等,最后关闭查询。
最后,我们要记得在我们的AndroidManifest.xml中注册premission
添加如下代码:
<uses-permissionandroid:name="android.permission.READ_SMS" />
参考网络资料:
http://hi.baidu.com/miuchen/blog/item/d5313b34bf35b887a61e1288.html
http://blog.csdn.net/madsky007/archive/2010/07/20/5750299.aspx
http://www.blogjava.net/easywu/archive/2010/02/19/313417.html
相关文章推荐
- 越狱的 ios 如何 获取 读取 提取 手机上的 短信 通话记录 联系人 等信息
- 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取
- iphone6手机已彻底删除短信如何恢复
- Android进阶之读取手机短信显示listview
- 安卓使用ContentProvider实现读取手机联系人和短信内容
- 如何从手机里面获取通讯录
- [ECshop系统]ECtouch如何接入手机短信验证功能
- 安卓使用ContentProvider实现读取手机联系人和短信内容
- android手机如何设置个性短信和来电铃声
- 如何节省手机短信费用_ 仅限移动
- 教你如何对付手机被强制收取短信费
- 怎么用getContentResolver().query读取手机短信
- SQLite入门之读取手机短信
- 怎么用getContentResolver().query读取手机短信
- 【如何用电脑查看手机短信呢?】
- 如何读取手机上的通讯录和短信息?
- Android 读取手机文件夹向指定文件夹下存放
- 手机短信如何实现实时传真通告
- 如何在spring中读取properties配置文件里面的信息
- 如何让你的系统具有向外发送手机短信或即时消息的功能?