Android系统源码数据库(mmssms.db)中几个表之间的关系
来源:互联网 发布:易烊千玺同款衣服淘宝 编辑:程序博客网 时间:2024/06/06 00:01
Android系统源码数据库(mmssms.db)中几个表之间的关系.
论Android系统源码数据库(mmssms.db)中几个表之前的关系.
首先明了未接信息的数据库的位置在系统
/data/data/com.android.providers.telephony/databases/mmssms.db包下。
希望大家能够结合源码中的
1.
2.
3.
4.
5.
前一段时间在开发项目时,遇到这样的需求,要求将 未接短信,未接彩信的信息显示在Widget上。当我们查询mmssms.db数据库时,这其中涉及到以下几张表:
1.
2.
3.
4.
能否将未接短信,彩信信息直接显示在Widget上,关键是必须要搞清出这4张表之间的表关系。根据我的编码经验,先抛砖引玉地在这里讲解出我的理解…
对于这几张表,我只简单地列出关键字段,省略部分均用(….)代替。
以下的 ”信息” 指代(mms,sms)
threads(表)
查询该表时,所需要的uri:
MMS_SMS_URI =Uri.parse("content://mms-sms")
MSG_QUERY_URI=
可以这样得到 Uri MSG_QUERY_URI=Uri.withAppendedPath(MMS_SMS_URI,
_id
date
message_count
recipient_ids
snippet
read
has_attchment
………
1
1302468989000
3
15
yulei team:你好,华为无线网络技术有限公司,诚邀您来进行面试....
0
1
2
1302343202189
1
32
京城最后升值时机!地铁4号线无缝接驳,首二机场伴您起飞!纯板社区景观美宅大产权,样板间华美绽放90平55万,三期优惠进行中67659006
1
0
3
1302359506000
1
33
《人力资源管理》实战特训班.主讲:企业招聘面试技巧、绩效管理与薪酬体系设计于4月14-16日人民大学授课.报名010-57810898
0
0
4
1302468808000
1
34
6个月与老外交流无障碍!资深外教一对一,定制式教育,口语快速突破的高效课程模式!好方法不怕试,免费体验课预约:51662230
0
0
threads表字段说明:
_id: 用于区分不同的电话号码,系统会为不同的电话号码分配不同的_id.
date: 收到信息的时间(如果收到来自同一个phone number多条信息,并且有对于一条信息未读,那么date表示收到的最后一条信息时的时间)
message_count:收到的信息的数目(sms+mms)
snippet: 如果来自某个phone number,仅仅有一条信息,那么会是如下情况
如果是未接短信,代表未接短信的内容
如果是最后一条是未接短信,代表最后一条未接短信的内容
如果是最后一条是未接彩信,代表最后一条未接彩信的subject.
read: 0. 代表未读。 1.代表 已读
has_attchment:代表来自该phone number的信息是否包含有附件。
依据上面的表结构,也许会有人问,phone number 呢?有这样的疑问是非常正常的,别着急,学过数据库的人都知道,表结构之间并不是孤立的,而是相互关联的。phone number 会在另外几张表中出现。
Sms表
查询该表时的uri
_id
thread_id
address
date
read
subject
body
locked
1
2
076922159797
1302343202189
1
<null>
京城最后升值时机!地铁4号线无缝接驳,首二机场伴您起飞!纯板社区景观美宅大产权,样板间华美绽放90平55万,三期优惠进行中67659006
2
3
+8613366790288
1302359506626
0
<null>
《人力资源管理》实战特训班.主讲:企业招聘面试技巧、绩效管理与薪酬体系设计于4月14-16日人民大学授课.报名010-57810898
3
4
+8618659506145
1302468808232
0
<null>
6个月与老外交流无障碍!资深外教一对一,定制式教育,口语快速突破的高效课程模式!好方法不怕试,免费体验课预约:51662230
4
1
1252013910095023
1302468964929
0
<null>
Lockscreenteam:你好,microsoft公司,诚邀你来面试...
5
1
1252013910095023
1302468989263
0
<null>
Lockscreenteam:你好,华为无线网络技术有限公司,诚邀您来进行面试....
Sms表字段说明
_id: 区分不同的短信。
threads_id:(外键)引用threads表的_id.
date: 该条短信接收的时间
read: 0表未读,1表已读
body: 表示具体的短信内容,(注意,虽然在thread表的snippet字段已经存储了一部分body,但是那里的并不全,仅仅是一部分body)
locked: 该字段我也不是很清楚,用到的不多,不过如果我标识某条信息为locked时,当我再删除这条信息时,系统会提示我“是否删除locked信息”。
很明显以上:_id为4.或5的短信,来自同一个phone number,也就是说他们的thread_id是相同的.
Pdu表:
URI_MMS_INBOX =Uri.parse("content://mms/inbox");
_id
Thread_id
date
Msg_box
read
M_id
sub
Ct_l
m_type
…..
1
1
1302256504
1
1
040817550491000002112
Lockscreïš15151656666
<null>
132
Pdu表字段说明:
_id: 区分不同的彩信
thread_id :外键 (引用thread表的_id)
msg_box: 区分彩信的收件箱,发件箱,草稿箱等.
read:是否已读,0 未读,1.已读
sub: 彩信的subject
ct_l: 如果彩信太大,或者由于网络原因,也又是由于手机设备原因,dowload失败,彩信看不了,这个字段就会有彩信的网址(我曾经见到过一次,http://格式的,就是一个网址)
Part表:
表的路径UriMMS_PART_URI = Uri.parse("content://mms/part")
_id
mid
ct
cid
_data
text
1
1
application/smil
<mms.smil>
<null>
不用关心
2
1
text/plain
<1.txt>
<null>
I am mms body
3
1
audio/midi
<2.midi>
/data/data/com.android.providers.telephony/app_parts/PART_130228532714
<null>
4
1
image/gif
<3.gif>
/data/data/com.android.providers.telephony/app_parts/PART_1302285327200
<null>
5
1
image/gif
<4.gif>
/data/data/com.android.providers.telephony/app_parts/PART_1302285327255
<null>
6
1
text/plain
<5.txt>
<null>
中国移动飞信抢沙发活动火热登场!登录WAP飞信参与活动,iPodnano、手机等大奖每天轮换送!点击链接查看http://f.10086.cn/f/qzuo[通过移动梦网接入点访问免流量费]
7
1
text/plain
<6.txt>
<null>
【飞信提醒您】本条彩信不能以彩信方式回复
Part表字段说明:
_id: 区分某条彩信的不同附件(包括文本,图片,音频,视频等格式)
mid: 外键,引用pdu表的_id.
ct: 指示附件是什么类型的(text/ 表示文本, audio/ 表示音频, video/表是 视频 , image/
表示图片)
_data: 标明附件存放在手机的哪个地方
text: 表示彩信的body。
Canonical_address表
查询这张表所需要的uri:
MMS_SMS_ADDRESS_URI = Uri
_id
address
15
1-391-009-5023
32
076922159797
33
+8613366790288
34
+8618659506145
Canonical_address表字段说明:
_id: 外键,引用threads表的recipient_id字段
address: 代表给我们发短的那个人的phone number
对于编程时,phone number 1:
很明显,他们应该属于同一个联系人
- Android系统源码数据库(mmssms.db)中几个表之间的关系【转】
- Android系统源码数据库(mmssms.db)中几个表之间的关系.
- Android系统源码数据库(mmssms.db)中几个表之间的关系
- Android系统源码数据库(mmssms.db)中几个表之间的关系
- mmssms.db数据库各个表的作用学习
- 彩信数据库mmssms.db
- android mmssms.db各个表介绍
- framework 开发 之 mmssms.db 中表结构的理解
- 数据库中几个表之间的关联查询
- 数据库中几个表之间的关联查询
- 数据库表中字段之间的关系设置
- db与放大倍数之间的关系
- 6: 理解C#中几个“等价”概念之间的关系
- tinyxml源码剖析(1)-源码中几个主要类的关系
- Android单线程模型中Message、Handler、Message Queue、Looper之间的关系---附实例源码
- Android单线程模型中Message、Handler、Message Queue、Looper之间的关系---附实例源码
- Android中Handler Thread(HandlerThread) Runnable之间的关系
- Android 中Activity,Window之间的关系
- 新浪微博SSO退出设计缺陷【成佩涛】
- MFC将窗口最小化到托盘
- Morris 先序遍历
- spring spring是用来解决什么问题的?
- #数据库操作tips#执行insert语句,参数太多时将insert语句格式化
- Android系统源码数据库(mmssms.db)中几个表之间的关系
- 踏入职场的起点(连载一)
- redis配置集群
- android 本地数据库更新
- python设计模式之享元模式
- 第四章 线程
- iOS界面调试工具 Reveal
- 安卓切换界面从顶部滑入,右侧滑入
- 【jsp】利用js 弹出div 锁定屏幕