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系统的应用开发。

相关问题拓展阅读:

android怎样实现用代码从数据库获取短信内容等等

数据库获取代码如下:

String databaseFilename = DATABASE_PATH + “/” + DATABASE_NAME;

File dir = new File(DATABASE_PATH);

if (!dir.exists())

dir.mkdir();

if (!(new File(databaseFilename)).exists()) {

InputStream is = context.getResources().openRawResource(R.raw.jobexam);

FileOutputStream fos = new FileOutputStream(databaseFilename);

byte buffer = new byte;

int count = 0;

while ((count = is.read(buffer)) > 0) {

fos.write(buffer, 0, count);

}

fos.close();

is.close();

}

db = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null);

通常分享功能是调用者发起的,如果是文字分享调用都需要做

intent.putExtra(Intent.EXTRA_SUBJECT, “分享”);

intent.putExtra(Intent.EXTRA_TEXT, “好东西,与您分享!”);

传递这两个参数,接收都就拿这两个值就可以了。

android 19高版本怎么写短信数据库

高版本好像只能本身的可以操作,第三方都没有权限了

关于android 短信数据库表结构的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » Android短信数据库表结构详解 (android 短信数据库表结构)