彩信数据库mmssms.db

来源:互联网 发布:芒果tv网络电视安卓版 编辑:程序博客网 时间:2024/06/04 18:20

trigger:

insert_mms_pending_on_insert:当pdu表中插入了一条数据,类型为130(彩信通知)或135(待发送阅读报告),说明有信息要发送,trigger会在pending_msgs表插入一条数据;

delete_mms_pending_on_update:当pdu表中有记录的msg_box从4-待发件箱改为别的值,说明有一条信息已经发出等,就从pending_msgs表中删除一条对应数据

 

短信表:sms、raw、sr_pending、attachments。

彩信表:pdu、part、addr、drm、rate。

公共表:canonical_addresses、threads、pending_msg、words。

 

    短信表sms

    _id

    短信id

    thread_id

    对应的会话id

    address

    对方的号码

    person

    联系人列表里的ID

    date

    接收时间

    data_sent

    发送时间

    protocol

     

    read

    用户是否看过这条信息

    0-未读;1-已读

    status

    信息状态,默认是-1

    待发送32;

    发送失败64;

    已送达0(开启了送达报告)

    type

    信箱类型id

    pdu.msg_box作用和赋值相同

    reply_path_present

     

    subject

    信息主题,一般为空

    body

    短信内容

    service_center

    服务中心即短信中心,只有gsm

    卡有,如+8613800100500

    locked

    是否锁定,默认0=不锁定

    error_code

     

    seen

    用户是否看过这条信息的通知

    0-没看过;1-看过了

     

    短信表raw

    _id

    流水号

    date

     

    reference_number

     

    count

     

    sequence

     

    destination_port

     

    address

     

    pdu

     

     

    短信表sr_pending:好像没有用到?

    reference_number

     

    action

     

    data

     

     

    短信表attachments

    sms_id

     

    content_url

     

    offset

     

     

    公共表threads

    _id

    流水号

    date

    会话中最后一条信息的日期(不包括

    草稿),也用作会话在会话列表中

    排序

    message_count

    会话中的信息数量

    recipient_ids

    多个canonical_addresses.id组成的

    串,多个id时以空格分隔

    snippet

    片段,会话中最后一条信息的内容,

    如果是彩信就是主题

    snippet_cs

    snippet的编码格式

    read

    是否有未读信息,0-有未读,1-没有

    type

     

    error

     

    has_attachment

    有无附件(不必是最后一条信息)

 

彩信表pdu:彩信主表

_id

彩信id

thread_id

对应的会话id

date

接收时间

date_sent

发送时间

msg_box

信箱类型id

sms.type作用和赋值相同

Telephony.Type

read

用户是否看过这条信息

0-未读;1-已读

m_id

 

sub

subject彩信的主题

sub_cs

subject charset

主题的字符集类型

ct_t

content type内容类型,信息中存储的

是多媒体信息还是其他,如m_type=

128/132(发、收的正文)时,值是

application/vnd.wap.multipart.related

而m_type=134(送达报告)时值为空

ct_l

content-location

在彩信中心的下载url

exp

expire过期时间,通常是从发送时间

开始后3天=24x3小时=72小时

m_cls

message class信息类别如

个人(值personnal)、广告等

X-Mms-Message-Class

m_type

信息类型,和

pending_msgs.msg.type一样

X-Mms-Message-Type

v

version这条彩信符合的规范版本

在PduHeader中定义了16/17/18/19

当前版本是18

m_size

 

pri

priority优先级

rr

read_report

是否收到了阅读报告

rpt_a

 

resp_st

response status

发送彩信后,mmsc应答的状态

字段X-Mms-Response-Status

m_type=MESSAGE_TYPE_SEND_CONF

st

status彩信状态

X-Mms-Status Field

tr_id

 

retr_st

 

retr_txt

 

retr_txt_cs

 

read_status

 

ct_cls

 

resp_txt

 

d_tm

 

d_rpt

delivery report

是否收到了送达报告,这个字段其实

是无效的,起作用的是单独的一条

送达报告记录

locked

是否锁定,默认0=不锁定

seen

用户是否看过这条信息的通知

0-没看过;1-看过了

 

公共表canonical_addresses,存放thread的收件人的地址

_id

流水号

address

号码:电话号码或email

 

彩信part表:存储彩信内容、附件等

_id

流水号

mid

对应pdu._id

seq

 

ct

content内容类型如图片image/jpeg

name

 

chset

 

cd

 

fn

 

cid

 

cl

 

ctt_s

 

ctt_t

 

_data

附件的存储位置如

/data/data/com.android.providers

.telephony/app_parts/PART_316077722124

text

 

 

公共pending_msgs表:待发送信息表

_id

流水号

proto_type

 

msg_id

对应pdu._id

msg_type

信息类型,和pdu.m_type一样

err_type

 

err_code

 

retry_index

已尝试的发送次数

due_time

 

last_try

 

 

彩信addr表:地址表,主要字段是电话号码address

_id

流水号

msg_id

对应pdu.msg_id

contact_id

    电话本中联系人的id

    (好像数据并没有关联?)

address

号码

type

发出信息/接收信息,主要两个值151/137

151=PduHeader.To 

137=PduHeader.From

charset

 

 

彩信表drm

_id

 

_data

 

 

彩信表rate

sent_time

 

 

公共表words

_id

 

index_text

 

source_id

 

table_to_use

 

 

MessageListAdapter.java会监听数据的变化onContentChanged,然后在ComposeMessageActivity.mDataSetChangedListener.onContentChanged查询数据,查询完成后在BackgroundQueryHandler.onQueryComplete中调用mMsgListAdapter.changeCursor(cursor);又回到MessageListAdapter,数据cursor变化引起界面重绘,这样某一条信息的下载状态就实时显示了如正在下载、没有下载等。

ConversationListAdapter.javaMessageListAdapter.java两个Adapter都注册了数据变化的监听器,最后在ActivityConversationList.javaComposeMessageActivity.java中显示出来

字段read:如果sms.type/mms.msg_box不是1-收件箱,该字段值在insert数据的时候都会赋值1-已读(不是收件箱,这个字段就没用了),赋值是在SmsProvider.insert和MmsProvider.insert中

read和seen很多时候同时为0或1,但是也有不一致的情况,如:同时收到多个联系人的信息时,会在状态条下拉栏提示,当用户进入(无论是点击通知进入还是点击mms程序进入)到conversationlist而不是messagelist,没有真正阅读这些信息),这seen=1表示用户已看过通知(即使重启手机也不会再提示了),read=0表示用户没看过信息

MMS中保存数据库的操作可以搜索:Inbox.CONTENT_URI,对彩信的保存还有persist