Android短信数据库表结构详解 (android 短信数据库表结构)
Android智能手机是如今使用最广泛的移动设备之一,短信作为一种直观简单的传输方式在移动设备上有着广泛的应用。Android系统使用SQLite作为其自带的关系型数据库,对于短信管理的实现也是通过建立一张短信表,我们可以从中得到关于Android短信数据库表结构的详细信息。
一、S表
简介:S表是Android系统中最关键的一张短信表,存储用户发送和接收到的短信信息。
表结构:
“`
sqlite> .schema s
CREATE TABLE s (
_id INTEGER PRIMARY KEY,
thread_id INTEGER,
address TEXT,
person INTEGER,
date INTEGER,
protocol INTEGER,
read INTEGER DEFAULT 0,
status INTEGER DEFAULT -1,
type INTEGER,
reply_path_present INTEGER,
subject TEXT,
body TEXT,
service_center TEXT,
locked INTEGER DEFAULT 0,
error_code INTEGER DEFAULT 0,
seen INTEGER DEFAULT 0,
deletable INTEGER DEFAULT 1,
sim_slot INTEGER,
hidden INTEGER DEFAULT 0,
group_id INTEGER DEFAULT 0,
group_type INTEGER DEFAULT 0,
delivery_date INTEGER,
app_id TEXT,
msg_id TEXT,
reserved BOOLEAN DEFAULT 0,
priority INTEGER DEFAULT 0,
template_id INTEGER DEFAULT 0,
metadata TEXT,
raw_status INTEGER DEFAULT 0,
creator TEXT DEFAULT ‘com.android.mms’,
send_timestamp INTEGER DEFAULT 0 NOT NULL,
expire_on INTEGER DEFAULT 0 NOT NULL
);
“`
S表共包括31个列属性,下面就对其中一些关键属性进行展开简述。
1. _id
表明该短信在短信数据库中的唯一标识符。
2. thread_id
表明该短信的会话ID,用于将一组短信归为一组,表现为同一个联系人或一组聊天记录。
3. address
表明该短信所属联系人的手机号码或名称。
4. date
表明该短信的日期和时间,时间戳格式,单位是毫秒。
5. protocol
表明该短信协议的类型,0为S,1为MMS。
6. read
表明该短信是否已读,0为未读,1为已读。
7. status
短信发送状态,-1为未知状态。
8. type
表明该短信的类型,1为接收到的短信,2为发出的短信。
9. body
表明该短信的主题,包含文本内容。
二、MMS表
简介:MMS表是针对Android系统中的彩信服务而创建的数据表,存放用户发送和接收到的彩信信息。
表结构:
“`
sqlite> .schema pdu
CREATE TABLE pdu (
_id INTEGER PRIMARY KEY,
thread_id INTEGER DEFAULT 0,
date INTEGER,
date_sent INTEGER DEFAULT 0,
msg_box INTEGER,
read INTEGER DEFAULT 0,
m_id INTEGER,
sub INTEGER,
sub_cs INTEGER,
ct_t TEXT,
ct_l TEXT,
exp INTEGER,
m_cls INTEGER,
m_type INTEGER,
v INTEGER DEFAULT 0,
m_size INTEGER,
priority INTEGER DEFAULT 0,
rr INTEGER DEFAULT 0,
rpt_a INTEGER DEFAULT 0,
resp_st INTEGER DEFAULT 0,
st INTEGER DEFAULT -1,
tr_id TEXT,
retr_st INTEGER DEFAULT 0,
retr_txt TEXT,
retr_txt_cs INTEGER DEFAULT 0,
read_status INTEGER DEFAULT 0,
ct_cls TEXT DEFAULT ‘personal’,
resp_txt TEXT,
d_tm INTEGER DEFAULT 0,
dk_time INTEGER DEFAULT 0,
exp_i INTEGER DEFAULT 0,
m_rpt INTEGER DEFAULT 0,
v_cal_fn TEXT,
v_cal_scale INTEGER DEFAULT -1,
v_cal_meth INTEGER DEFAULT -1,
v_cal_text TEXT,
v_card_name TEXT,
v_hcard TEXT,
v_event TEXT,
v_ical TEXT,
v_note TEXT,
v_poll_q TEXT,
v_poll_a TEXT,
v_response TEXT,
v_apptst TEXT,
v_exception_date INTEGER DEFAULT 0,
v_exception_rule TEXT,
total_pages INTEGER DEFAULT 0,
octet INTEGER DEFAULT 0,
start INTEGER DEFAULT -1,
distribution_indicator INTEGER DEFAULT -1,
element_descriptor TEXT,
limit INTEGER DEFAULT -1,
recommended_retrieval_mode INTEGER DEFAULT 0,
recommended_retrieval_mode_text TEXT,
recommended_retry_after TEXT,
cc TEXT,
bcc TEXT,
total_bytes INTEGER DEFAULT 0,
image_count INTEGER DEFAULT 0,
vcard_count INTEGER DEFAULT 0,
audio_count INTEGER DEFAULT 0,
video_count INTEGER DEFAULT 0,
slides_duration INTEGER DEFAULT 0,
muted INTEGER DEFAULT 0,
answered INTEGER DEFAULT 0,
locked INTEGER DEFAULT 0,
app_id TEXT,
msg_id TEXT,
resp_id TEXT,
status TEXT,
raw_status TEXT,
service_center TEXT,
locked_by_fwk INTEGER DEFAULT 0,
creator TEXT DEFAULT ‘com.android.mms’,
last_resp_txt TEXT,
send_timestamp INTEGER DEFAULT 0 NOT NULL,
expire_on INTEGER DEFAULT 0 NOT NULL
);
“`
MMS表共包括69个列属性,下面就对其中一些关键属性进行展开简述。
1. _id
表明该彩信在短信数据库中的唯一标识符。
2. thread_id
表明该彩信的会话ID,用于将一组彩信归为一组,表现为同一个联系人或一组聊天记录。
3. date
表明该彩信的日期和时间,时间戳格式,单位是毫秒。
4. msg_box
表示该彩信所在的信箱,值为1或2或3,1表示收件箱,2表示发件箱,3表示草稿箱。
5. sub
表示该彩信的主题,包含文本内容。
6. m_id
表示该彩信在彩信数据包中的唯一标识符。
7. read
表示该彩信是否已读,0为未读,1为已读。
8. m_type
表示该彩信的类型,值为132或130。
9. m_size
表示该彩信的大小,以字节为单位。
三、Threads表
简介:Threads表用于存储与所有联系人的短信聊天记录,可以将多条短信映射到同一个主题下,从而保证归纳短信记录的流畅性。
表结构:
“`
sqlite> .schema threads
CREATE TABLE threads (
_id INTEGER PRIMARY KEY,
date INTEGER DEFAULT 0,
message_count INTEGER DEFAULT 0,
recipient_ids TEXT,
snippet TEXT,
snippet_cs INTEGER DEFAULT 0,
read INTEGER DEFAULT 1,
type INTEGER DEFAULT 0,
error INTEGER DEFAULT 0,
has_attachment BOOLEAN DEFAULT 0,
draft BOOLEAN DEFAULT 0,
reply_sequence_number INTEGER DEFAULT 0,
status INTEGER DEFAULT -1,
last_message_date_sent INTEGER,
recipient_names TEXT,
archived BOOLEAN DEFAULT 0,
thread_account TEXT,
thread_account_type TEXT,
thread_account_id TEXT,
merge_key TEXT,
forward_message_number TEXT,
include_eml_addresses BOOLEAN DEFAULT 0,
preview_image TEXT,
preview_image_uri TEXT,
s_service_center TEXT,
mms_subject TEXT,
mms_subject_cs INTEGER DEFAULT 0,
group_number TEXT,
group_max_count INTEGER DEFAULT 0,
group_delivery_date INTEGER DEFAULT 0,
group_delivery_receipt_count INTEGER DEFAULT 0,
group_read_receipt_count INTEGER DEFAULT 0,
group_response_count INTEGER DEFAULT 0,
group_subject TEXT,
group_subject_cs INTEGER DEFAULT 0,
group_type INTEGER DEFAULT 0,
group_id INTEGER DEFAULT 0,
notification_enabled BOOLEAN DEFAULT 1,
notification_sound_uri TEXT,
notification_vibrate BOOLEAN DEFAULT 1,
notification_blink BOOLEAN DEFAULT 1,
wallpaper TEXT,
wallpaper_uri TEXT,
mute BOOLEAN DEFAULT 0,
archive_status BOOLEAN DEFAULT 0,
priority INTEGER DEFAULT 0,
raw_message_size LONG DEFAULT 0,
forward_status INTEGER DEFAULT 0
);
“`
Threads表共包括47个列属性,下面就对其中一些关键属性进行展开简述。
1. _id
表明该会话在数据库中的唯一标识符。
2. date
表明该会话的最近更新时间,持续时间格式,单位是毫秒。
3. message_count
表明该会话内的短信数量。
4. recipient_ids
表明该会话涉及到的联系人ID,以逗号分隔。
5. snippet
表明该会话的简略信息。
6. read
表明该会话内的短信是否已读,0为未读,1为已读。
7. type
表明该会话的类型,值为0或1或2,0表示普通会话,1表示广告会话,2表示群组会话。
8. thread_account
表明该会话所属的账户名。
9. mute
表明该会话是否免打扰,0为不免打扰,1为免打扰。
综上所述,我们可以进一步了解Android系统中短信数据库表结构的概况,如果想要深入开发与利用该功能进行相关应用场景的实现,建议进一步学习SQLite数据库的相关规范和语法,从而更好地促进Android系统的应用开发。