Android 短信模块分析(七) MMS数据库定义及结构整理

一. mmssms.db

数据库mmssms.db中表的定义见表4.1至4.18所示:

表4.1 addr(彩信地址)


字段名


类型


描述


备注


_id


INTEGER PRIMARY_KEY


主键ID


系统生成


msg_id


INTEGER


The ID of MM whcich this

Address entry belongs to.


Pdu主键关联


contact_id


INTEGER


The ID of contact entry in Phone Book

 

address


TEXT


The address text

 

type


INTEGER


Type of address,must be one

Of PduHeaders.BCC, PduHeaders.CC, PduHeaders.FROM, PduHeaders.TO.

 

charset


INTEGER


Character set of entry

 

表4.2 android_metadata(语言)


字段名


类型


描述


备注


locale


TEXT


本地采用语言


例如:zh_CN

表4.3 attachments (附件)


字段名


类型


描述


备注


sms_id


INTEGER


短信id


FK,短信表主键


content_url


TEXT


url

 

offset


INTEGER


偏移量

 

表4.4 canonical_addresses(所以短信删除,此数据依然存在)


字段名


类型


描述


备注


_id


INTEGER PRIMARY_KEY


主键ID


系统生成


address


TEXT


发送或接收的电话号码

 

表4.5 drm()


字段名


类型


描述


备注


_id


INTEGER PRIMARY_KEY


主键ID


系统生成


_data


TEXT


处理加密解密的数据

 

表4.6 part(存储了彩信内容(文本、音乐、图象)的文件名(即在parts下面的文件名)、文件类型信息)


字段名


类型


描述


备注


_id


INTEGER PRIMARY_KEY


主键ID


系统生成


mid


INTEGER


The identifier of the message which this part belongs to.


Pdu主键关联


seq


INTEGER


The order of the part

所发送Part的顺序

 

ct


TEXT


The content type of the part

彩信数据类型

 

name


TEXT


The name of the part

Part名称

 

chset


INTEGER


The charset of the part.

字符集

 

cd


TEXT


The content disposition of the part.

内容配置

 

fn


TEXT


The file name of the part.

文件名称

 

cid


TEXT


The content ID of the part

 

cl


TEXT


The content location of the part

 

ctt_s


INTEGER


The start of content-type of the message

 

ctt_t


TEXT


The type of content-type of the message

 

_data


TEXT


The location(on filesystem) of the binary data of the part.

数据的位置

如:/data/data/com.providers.telephony/app_parts/PART_1300271462558


这个字段基本没什么用,不能直接读取这个文件,读取同样需要通过ContentProvider,URI为”conteng://mms/part”


text


TEXT

   

表4.7 pdu(彩信)


字段名


类型


描述


备注


_id


INTEGER PRIMARY_KEY


主键ID


系统生成


thread_id


INTEGER


Threads 的PK


FK


date


INTEGER


The date the message was sent.

发送日期

 

read


INTEGER


Has the message been read

已读为1,未读为0

 

m_id


TEXT


The Message-ID of the message.

 

sub


TEXT


The subject of the message, if present

主题

 

sub_cs


INTEGER


The character set of the subject, if present

主题所用字符集

 

ct_t


TEXT


The Content-Type of the message

 

ct_l


TEXT


The Content-Location of the message.

 

exp


INTEGER


The expiry time of the message.

过期时间

 

m_cls


TEXT


The class of the message.

 

m_type


INTEGER


The type of the message defined by MMS spec

 

v


INTEGER


The version of specification that this message conform.

 

m_size


INTEGER


The size of the message

彩信大小

 

pri


INTEGER


The priority of the message.

 

rr


INTEGER


The read-report of the message.

 

rpt_a


INTEGER


Whether the report is allowed.

 

resp_st


INTEGER


The response-status of the message.

 

st


INTEGER


The status of the message.

 

tr_id


TEXT


The transaction-id of the message.

 

retr_st


INTEGER


The retrieve-status of the message.

 

retr_txt


TEXT


The retrieve-text of the message.

 

retr_txt_cs


INTEGER


The character set of the retrieve-text.

 

read_status


INTEGER


The read-status of the message.

 

ct_cls


INTEGER


The content-class of the message.

 

resp_txt


TEXT


The response-text of the message.

 

d_tm


INTEGER


The delivery-time of the message.

 

d_rpt


INTEGER


The delivery-report of the message.

 

locked


INTEGER


Has the message been locked?

 

sim_id


INTEGER

   

seen


INTEGER


Indicates whether this message has been seen by the user. The "seen" flag will be used to figure out whether we need to throw up a statusbar notification or not.


有看为1,否则为0

表4.8 pending_msgs


字段名


类型


描述


备注


_id


INTEGER PRIMARY_KEY


主键ID


系统生成


proto_type


INTEGER


The type of transport protocol(MMS or SMS).

 

msg_id


INTEGER


The ID of the message to be sent or downloaded.

 

msg_type


INTEGER


The type of the message to be sent or downloaded.             This field is only valid for MM. For SM, its value is always

 

err_type


INTEGER


The type of the error code.

 

err_code


INTEGER


The error code of sending/retrieving process.

 

retry_index


INTEGER


How many times we tried to send or download the message.

 

due_time


INTEGER


The time to do next retry.

 

pending_sim_id


INTEGER

   

last_try


INTEGER


The time we last tried to send or download the message.

 

表4.9 rate(彩信发送时间)


字段名


类型


描述


备注


sent_time


INTEGER


When a message was successfully sent.

 

表4.10 raw(This table is used by the SMS dispatcher to hold         incomplete partial messages until all the parts arrive.)


字段名


类型


描述


备注


_id


INTEGER PRIMARY_KEY


主键ID


系统生成


_data


INTEGER


处理加密解密的数据

 

reference_number


INTEGER


one per full message

 

count


INTEGER


the number of parts

 

sequence


INTEGER


the part number of this message

 

destination_port


INTEGER

   

address


TEXT

   

sim_id


INTEGER

   

pdu


TEXT


the raw PDU for this part

 

表4.11 sms(短信)


字段名


类型


描述


备注


_id


INTEGER PRIMARY_KEY


主键ID


系统生成


thread_id


INTEGER


Threads 的PK


FK

在短信界面里显示在第一组的第一行


address


TEXT


对方短信号码

 

person


INTEGER


存在电话薄里的名字,不存在的为空

 

date


INTEGER


日期

 

protocol


INTEGER

 
发送短信为空,收到为0


read


INTEGER


已读未读


已读为1,未读为0


status


INTEGER


a TP-Status value or -1 if it status hasn‘t been received

 

type


INTEGER

 
发短信为2,收到短信为1


reply_path_present


INTEGER

 
发短信为空,收到的为0


subject


TEXT


主题

 

body


TEXT


短信内容

 

service_center


TEXT


运营商服务电话

 

locked


INTEGER


是否锁掉了。


0为未锁,1已锁


sim_id


INTEGER

   

error_code


INTEGER


The error code of sending/retrieving process.

 

seen


INTEGER


Indicates whether this message has been seen by the user. The "seen" flag will be used to figure out whether we need to throw up a statusbar notification or not.


有看为1,否则为0

表4.12 sr_pending(This table is used by the SMS dispatcher to hold pending delivery status


字段名


类型


描述


备注


reference_number


INTEGER

 

action


TEXT

 

data


TEXT

   

表4.13 threads(在ConversationList.java中显示的当前短信)


字段名


类型


描述


备注


_id


INTEGER PRIMARY_KEY


主键ID


系统生成


date


INTEGER


The date at which the thread was created.

日期

 

message_count


INTEGER


The message count of the thread.

短信总条数

 

recipient_ids


TEXT


canonical_addresses的主键


FK


snippet


TEXT


The snippet of the latest message in the thread.

在最前面显示的短信

 

snippet_cs


INTEGER


The charset of the snippet.

 

read


INTEGER


Indicates whether all messages of the thread have been read.


已读为1,未读为0


type


INTEGER


Type of the thread, either Threads.COMMON_THREAD or         Threads.BROADCAST_THREAD.


push的短信为0


error


INTEGER


Indicates whether there is a transmission error in the thread.


有错误为1,没有为0


has_attachment


INTEGER


Indicates whether this thread contains any attachments.


没有为1,有为0

表4.15 words


字段名


类型


描述


备注


_id


INTEGER


如果是短信则与source_id相同;如果为彩信则是:

(2<<32)+source_id

 

index_text


TEXT


存储的信息内容

 

source_id


INTEGER


如果是短信则表示sms的_id

如果是彩信则表示pdu的_id

 

table_to_use


INTEGER

 
短信为1,彩信为2

表4.16 words_content


字段名


类型


描述


备注


docid


INTEGER PRIMARY_KEY


主键ID


系统生成


c0_id


INTEGER


如果是短信则与source_id相同;如果为彩信则是:

(2<<32)+ c2source_id

 

c1index_text


TEXT


存储的信息内容

 

c2source_id


INTEGER


如果是短信则表示sms的_id

如果是彩信则表示pdu的_id

 

c3table_to_use


INTEGER

 
短信为1,彩信为2

表4.17 words_segdir


字段名


类型


描述


备注


level


INTEGER PRIMARY_KEY


主键ID

 

idx


INTEGER PRIMARY_KEY


主键ID

 

start_block


INTEGER


开始块

 

leaves_end_block


INTEGER

   

end_block


INTEGER


结束块

 

root


BLOB

   

表4.18 word_segments


字段名


类型


描述


备注


blockid


INTEGER PRIMARY_KEY


主键ID


系统生成


block


BLOB

   

simcontacts.db 中的表相对较少,只有三个:

数据库simcontacts.db中表的定义见表4.19至4.21所示:

表4.19 android_metadata


字段名


类型


描述


备注


locale


TEXT


本地采用语言


例如:zh_CN

表4.20 simPeople


字段名


类型


描述


备注


_id


INTEGER PRIMARY_KEY


主键ID


系统生成


name


TEXT

   

number


TEXT

   

simid


INTEGER

   

email


TEXT

   

pinyin


TEXT


拼音

 

表4.21 simPeopleLookup


字段名


类型


描述


备注


token


TEXT

   

source


INTEGER

 
与simPeople的_id进行关联

时间: 2024-09-30 06:30:43

Android 短信模块分析(七) MMS数据库定义及结构整理的相关文章

Android Telephony分析(七) ---- 接口扩展(异步转同步)

本文是基于上一篇<Android Telephony分析(六) —- 接口扩展(实践篇)>来写的.上一篇介绍的接口扩展的方法需要实现两部分代码:1. 从APP至RIL,发送请求:2. 从RIL至APP,上报结果. 由于这是一个异步请求,所以两部分流程都不能少,导致流程过于复杂.而本文的目的就是为了将异步请求转换成同步请求,节省第二部分“上报结果”的流程,从而简化整个接口扩展的流程和代码量.(当然,虽然<Android Telephony分析(六) —- 接口扩展(实践篇)>代码流程

android上引入七牛 上传图片或者文件 最终整理版本(可用)

1:导入相关的包(注意是4个哦) compile files('libs/android-async-http-1.4.9.jar')compile files('libs/qiniu-android-sdk-7.0.9.jar')compile files('libs/happy-dns-0.2.4.jar')compile files('libs/httpclient-4.3.6.jar') 2:看下面代码 调用方法即可. package cn.haodehaode.utils; impor

Android MMS数据库存储说明

数据表 MMS模块总共包含17张表:addr.android_metadata.attachments.canonical_addresses.drm.part.pdu.pending_msgs.rate.raw.sms.sr_pending.threads.words.words_content.words_segdir.words_segments. 其中,pending_msgs表用于存储待发送或下载的短信与彩信(有待证实),使用pdu中的触发器进行插入和删除.raw表用于存储接收中的长短

Android Volley分析(二)——实现

在Android Volley分析(一)--结构中主要分析了Volley的基本组件和框架结构,组件主要是定义的接口,也就是说我们可以实现这些接口来定制自己的Volley版本,比如NetWork.Cache.Request等等.Android Volley在com.android.volley.toolbox下已经做了这些工作,下面就看看这些具体的实现内容 先看一个Volley使用的例子 final TextView mTextView = (TextView) findViewById(R.id

Android多线程分析之四:MessageQueue的实现

罗朝辉 (http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 在前面两篇文章<Android多线程分析之二:Thread的实现>,<Android多线程分析之三:Handler,Looper的实现>中分别介绍了 Thread 的创建,运行,销毁的过程以及 Thread与 Handler,Looper 之间的关联:Thread 在其 run() 方法中创建和运行消息处理循环 Looper,而 Looper::loop() 方法不断地从 Messag

Android多线程分析之一:使用Thread异步下载图像

罗朝辉 (http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 打算整理一下对 Android Framework 中多线程相关知识的理解,主要集中在 Framework 层的 Thread, Handler, Looper, MessageQueue, Message, AysncTask,当然不可避免地要涉及到 native 方法,因此也会分析 dalvik 中和线程以及消息处理相关的代码:如 dalvik 中的 C++ Thread 类以及 Message

Android多线程分析之五:使用AsyncTask异步下载图像

Android多线程分析之五:使用AsyncTask异步下载图像 罗朝辉 (http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 在本系列文章的第一篇<Android多线程分析之中的一个:使用Thread异步下载图像>中.曾演示了怎样使用 Thread 来完毕异步任务. Android 为了简化在 UI 线程中完毕异步任务(毕竟 UI 线程是 app 最重要的线程).实现了一个名为 AysncTask 的模板类.使用 AysncTask 能够在异步任务进行的同

Android Binder分析二:Natvie Service的注冊

这一章我们通过MediaPlayerService的注冊来说明怎样在Native层通过binder向ServiceManager注冊一个service,以及client怎样通过binder向ServiceManager获得一个service,并调用这个Service的方法. Native Service的注冊 这里以MediaPlayerService举例来说明怎样在Native层注冊Service,首先来看main_mediaservice.cpp的main方法: int main(int a

Android SQLiteDatabase分析

Android中的数据存储使用的小巧的SQLite数据库.为了方便java层使用SQLite,android做了大量的封装,提供了一些列的类和API.本文章就揭露这些封装背后的类图关系. 老规矩,首先上图: SQLiteOpenHelper是Android SDK所提供的一个帮助类,通过此类来管理数据库的创建和版本控制. 通过SQLiteOpenHelper函数getReadableDatabase和函数getWritableDatabase可以得到一个SQLiteDatabase对象.用户通过