您的位置:首页 > 移动开发 > Android开发

android 短信 彩信 数据库

2010-09-25 16:42 253 查看

android 短信 彩信 数据库

转自:http://gnibre.javaeye.com/blog/558031

短信 sms

文件 /data/data/com.android.providers.telephony/databases/mmssms.db

这个数据库有13张表,sms表存了短信信息。

sms表的uri是

Java代码

public

static

final

Uri CONTENT_URI =

Uri.parse("content://sms"

);

public static final Uri CONTENT_URI =
Uri.parse("content://sms");


表项含义,我猜的

0 _id

1 thread_id 在短信界面里显示在第几组( 相同联系人的短信在同意行),英文名叫话题。

2 address 电话好吗

3 person ? 存在电话簿里的名字 。 可能吧

4 date 日期

5 protocol ?..

6 read ? 1- 已读 0-未读

7 status ?

8 type ? 2 我发送

9 reply_path_present ?

10 subject

11 body 短信内容

12 service_center ...

好没信息量。。。。

把源码补上。

在frameworks/base/core/java/android/provider/Telephony.java

Java代码

/**

* The thread ID of the message

* <P>Type: INTEGER</P>

*/

public

static

final

String THREAD_ID =

"thread_id"

;

/**

* The address of the other party

* <P>Type: TEXT</P>

*/

public

static

final

String ADDRESS =

"address"

;

/**

* The person ID of the sender

* <P>Type: INTEGER (long)</P>

*/

public

static

final

String PERSON_ID =

"person"

;

/**

* The date the message was sent

* <P>Type: INTEGER (long)</P>

*/

public

static

final

String DATE =

"date"

;

/**

* The protocol identifier code

* <P>Type: INTEGER</P>

*/

public

static

final

String PROTOCOL =

"protocol"

;

/**

* Has the message been read

* <P>Type: INTEGER (boolean)</P>

*/

public

static

final

String READ =

"read"

;

/**

* The TP-Status value for the message, or -1 if no status has

* been received

*/

public

static

final

String STATUS =

"status"

;

us 举例:

public

static

final

int

STATUS_NONE = -

1

;

public

static

final

int

STATUS_COMPLETE =

0

;

public

static

final

int

STATUS_PENDING =

64

;

public

static

final

int

STATUS_FAILED =

128

;

/**

* The type of the message

* <P>Type: INTEGER</P>

*/

public

static

final

String TYPE =

"type"

;

举例

public

static

final

int

MESSAGE_TYPE_ALL =

0

;

public

static

final

int

MESSAGE_TYPE_INBOX =

1

;

public

static

final

int

MESSAGE_TYPE_SENT =

2

;

public

static

final

int

MESSAGE_TYPE_DRAFT =

3

;

public

static

final

int

MESSAGE_TYPE_OUTBOX =

4

;

public

static

final

int

MESSAGE_TYPE_FAILED =

5

;

// for failed outgoing messages

public

static

final

int

MESSAGE_TYPE_QUEUED =

6

;

// for messages to send later

/**

* Whether the <code>TP-Reply-Path</code> bit was set on this message

* <P>Type: BOOLEAN</P>

*/

public

static

final

String REPLY_PATH_PRESENT =

"reply_path_present"

;

/**

* The subject of the message, if present

* <P>Type: TEXT</P>

*/

public

static

final

String SUBJECT =

"subject"

;

/**

* The body of the message

* <P>Type: TEXT</P>

*/

public

static

final

String BODY =

"body"

;

/**

* The service center (SC) through which to send the message, if present

* <P>Type: TEXT</P>

*/

public

static

final

String SERVICE_CENTER =

"service_center"

;

/**

* Has the message been locked?

* <P>Type: INTEGER (boolean)</P>

*/

public

static

final

String LOCKED =

"locked"

;

**

* The id of the sender of the conversation, if

present

* <P>Type: INTEGER (reference to item in content://contacts/people)</P>

*/

public

static

final

String PERSON =

"person"

;

/**
* The thread ID of the message
* <P>Type: INTEGER</P>
*/
public static final String THREAD_ID = "thread_id";

/**
* The address of the other party
* <P>Type: TEXT</P>
*/
public static final String ADDRESS = "address";

/**
* The person ID of the sender
* <P>Type: INTEGER (long)</P>
*/
public static final String PERSON_ID = "person";

/**
* The date the message was sent
* <P>Type: INTEGER (long)</P>
*/
public static final String DATE = "date";

/**
* The protocol identifier code
* <P>Type: INTEGER</P>
*/
public static final String PROTOCOL = "protocol";

/**
* Has the message been read
* <P>Type: INTEGER (boolean)</P>
*/
public static final String READ = "read";

/**
* The TP-Status value for the message, or -1 if no status has
* been received
*/
public static final String STATUS = "status";
// status 举例:
public static final int STATUS_NONE = -1;
public static final int STATUS_COMPLETE = 0;
public static final int STATUS_PENDING = 64;
public static final int STATUS_FAILED = 128;

/**
* The type of the message
* <P>Type: INTEGER</P>
*/
public static final String TYPE = "type";
// type 举例
public static final int MESSAGE_TYPE_ALL    = 0;
public static final int MESSAGE_TYPE_INBOX  = 1;
public static final int MESSAGE_TYPE_SENT   = 2;
public static final int MESSAGE_TYPE_DRAFT  = 3;
public static final int MESSAGE_TYPE_OUTBOX = 4;
public static final int MESSAGE_TYPE_FAILED = 5; // for failed outgoing messages
public static final int MESSAGE_TYPE_QUEUED = 6; // for messages to send later

/**
* Whether the <code>TP-Reply-Path</code> bit was set on this message
* <P>Type: BOOLEAN</P>
*/
public static final String REPLY_PATH_PRESENT = "reply_path_present";

/**
* The subject of the message, if present
* <P>Type: TEXT</P>
*/
public static final String SUBJECT = "subject";

/**
* The body of the message
* <P>Type: TEXT</P>
*/
public static final String BODY = "body";

/**
* The service center (SC) through which to send the message, if present
* <P>Type: TEXT</P>
*/
public static final String SERVICE_CENTER = "service_center";

// 另外还有
/**
* Has the message been locked?
* <P>Type: INTEGER (boolean)</P>
*/
public static final String LOCKED = "locked";

/**
* The id of the sender of the conversation, if present
* <P>Type: INTEGER (reference to item in content://contacts/people)</P>
*/
public static final String PERSON = "person";


彩信。

1、pdu表

mmssms.db库中的pdu表存储了彩信标题、彩信接收时间和彩信ID等信息,其中“_id”是主键,唯一标识了一个条彩信。

pdu 表源码

Java代码

/**

* Base columns for tables that contain MMSs.

*/

public

interface

BaseMmsColumns

extends

BaseColumns {

public

static

final

int

MESSAGE_BOX_ALL =

0

;

public

static

final

int

MESSAGE_BOX_INBOX =

1

;

public

static

final

int

MESSAGE_BOX_SENT =

2

;

public

static

final

int

MESSAGE_BOX_DRAFTS =

3

;

public

static

final

int

MESSAGE_BOX_OUTBOX =

4

;

/**

* The date the message was sent.

* <P>Type: INTEGER (long)</P>

*/

public

static

final

String DATE =

"date"

;

/**

* The box which the message belong to, for example, MESSAGE_BOX_INBOX.

* <P>Type: INTEGER</P>

*/

public

static

final

String MESSAGE_BOX =

"msg_box"

;

/**

* Has the message been read.

* <P>Type: INTEGER (boolean)</P>

*/

public

static

final

String READ =

"read"

;

/**

* The Message-ID of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String MESSAGE_ID =

"m_id"

;

/**

* The subject of the message, if present.

* <P>Type: TEXT</P>

*/

public

static

final

String SUBJECT =

"sub"

;

/**

* The character set of the subject, if present.

* <P>Type: INTEGER</P>

*/

public

static

final

String SUBJECT_CHARSET =

"sub_cs"

;

/**

* The Content-Type of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String CONTENT_TYPE =

"ct_t"

;

/**

* The Content-Location of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String CONTENT_LOCATION =

"ct_l"

;

/**

* The address of the sender.

* <P>Type: TEXT</P>

*/

public

static

final

String FROM =

"from"

;

/**

* The address of the recipients.

* <P>Type: TEXT</P>

*/

public

static

final

String TO =

"to"

;

/**

* The address of the cc. recipients.

* <P>Type: TEXT</P>

*/

public

static

final

String CC =

"cc"

;

/**

* The address of the bcc. recipients.

* <P>Type: TEXT</P>

*/

public

static

final

String BCC =

"bcc"

;

/**

* The expiry time of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String EXPIRY =

"exp"

;

/**

* The class of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String MESSAGE_CLASS =

"m_cls"

;

/**

* The type of the message defined by MMS spec.

* <P>Type: INTEGER</P>

*/

public

static

final

String MESSAGE_TYPE =

"m_type"

;

/**

* The version of specification that this message conform.

* <P>Type: INTEGER</P>

*/

public

static

final

String MMS_VERSION =

"v"

;

/**

* The size of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String MESSAGE_SIZE =

"m_size"

;

/**

* The priority of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String PRIORITY =

"pri"

;

/**

* The read-report of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String READ_REPORT =

"rr"

;

/**

* Whether the report is allowed.

* <P>Type: TEXT</P>

*/

public

static

final

String REPORT_ALLOWED =

"rpt_a"

;

/**

* The response-status of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String RESPONSE_STATUS =

"resp_st"

;

/**

* The status of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String STATUS =

"st"

;

/**

* The transaction-id of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String TRANSACTION_ID =

"tr_id"

;

/**

* The retrieve-status of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String RETRIEVE_STATUS =

"retr_st"

;

/**

* The retrieve-text of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String RETRIEVE_TEXT =

"retr_txt"

;

/**

* The character set of the retrieve-text.

* <P>Type: TEXT</P>

*/

public

static

final

String RETRIEVE_TEXT_CHARSET =

"retr_txt_cs"

;

/**

* The read-status of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String READ_STATUS =

"read_status"

;

/**

* The content-class of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String CONTENT_CLASS =

"ct_cls"

;

/**

* The delivery-report of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String DELIVERY_REPORT =

"d_rpt"

;

/**

* The delivery-time-token of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String DELIVERY_TIME_TOKEN =

"d_tm_tok"

;

/**

* The delivery-time of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String DELIVERY_TIME =

"d_tm"

;

/**

* The response-text of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String RESPONSE_TEXT =

"resp_txt"

;

/**

* The sender-visibility of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String SENDER_VISIBILITY =

"s_vis"

;

/**

* The reply-charging of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String REPLY_CHARGING =

"r_chg"

;

/**

* The reply-charging-deadline-token of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String REPLY_CHARGING_DEADLINE_TOKEN =

"r_chg_dl_tok"

;

/**

* The reply-charging-deadline of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String REPLY_CHARGING_DEADLINE =

"r_chg_dl"

;

/**

* The reply-charging-id of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String REPLY_CHARGING_ID =

"r_chg_id"

;

/**

* The reply-charging-size of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String REPLY_CHARGING_SIZE =

"r_chg_sz"

;

/**

* The previously-sent-by of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String PREVIOUSLY_SENT_BY =

"p_s_by"

;

/**

* The previously-sent-date of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String PREVIOUSLY_SENT_DATE =

"p_s_d"

;

/**

* The store of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String STORE =

"store"

;

/**

* The mm-state of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String MM_STATE =

"mm_st"

;

/**

* The mm-flags-token of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String MM_FLAGS_TOKEN =

"mm_flg_tok"

;

/**

* The mm-flags of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String MM_FLAGS =

"mm_flg"

;

/**

* The store-status of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String STORE_STATUS =

"store_st"

;

/**

* The store-status-text of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String STORE_STATUS_TEXT =

"store_st_txt"

;

/**

* The stored of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String STORED =

"stored"

;

/**

* The totals of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String TOTALS =

"totals"

;

/**

* The mbox-totals of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String MBOX_TOTALS =

"mb_t"

;

/**

* The mbox-totals-token of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String MBOX_TOTALS_TOKEN =

"mb_t_tok"

;

/**

* The quotas of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String QUOTAS =

"qt"

;

/**

* The mbox-quotas of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String MBOX_QUOTAS =

"mb_qt"

;

/**

* The mbox-quotas-token of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String MBOX_QUOTAS_TOKEN =

"mb_qt_tok"

;

/**

* The message-count of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String MESSAGE_COUNT =

"m_cnt"

;

/**

* The start of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String START =

"start"

;

/**

* The distribution-indicator of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String DISTRIBUTION_INDICATOR =

"d_ind"

;

/**

* The element-descriptor of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String ELEMENT_DESCRIPTOR =

"e_des"

;

/**

* The limit of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String LIMIT =

"limit"

;

/**

* The recommended-retrieval-mode of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String RECOMMENDED_RETRIEVAL_MODE =

"r_r_mod"

;

/**

* The recommended-retrieval-mode-text of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String RECOMMENDED_RETRIEVAL_MODE_TEXT =

"r_r_mod_txt"

;

/**

* The status-text of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String STATUS_TEXT =

"st_txt"

;

/**

* The applic-id of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String APPLIC_ID =

"apl_id"

;

/**

* The reply-applic-id of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String REPLY_APPLIC_ID =

"r_apl_id"

;

/**

* The aux-applic-id of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String AUX_APPLIC_ID =

"aux_apl_id"

;

/**

* The drm-content of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String DRM_CONTENT =

"drm_c"

;

/**

* The adaptation-allowed of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String ADAPTATION_ALLOWED =

"adp_a"

;

/**

* The replace-id of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String REPLACE_ID =

"repl_id"

;

/**

* The cancel-id of the message.

* <P>Type: TEXT</P>

*/

public

static

final

String CANCEL_ID =

"cl_id"

;

/**

* The cancel-status of the message.

* <P>Type: INTEGER</P>

*/

public

static

final

String CANCEL_STATUS =

"cl_st"

;

/**

* The thread ID of the message

* <P>Type: INTEGER</P>

*/

public

static

final

String THREAD_ID =

"thread_id"

;

/**

* Has the message been locked?

* <P>Type: INTEGER (boolean)</P>

*/

public

static

final

String LOCKED =

"locked"

;

}

/**
* Base columns for tables that contain MMSs.
*/
public interface BaseMmsColumns extends BaseColumns {

public static final int MESSAGE_BOX_ALL    = 0;
public static final int MESSAGE_BOX_INBOX  = 1;
public static final int MESSAGE_BOX_SENT   = 2;
public static final int MESSAGE_BOX_DRAFTS = 3;
public static final int MESSAGE_BOX_OUTBOX = 4;

/**
* The date the message was sent.
* <P>Type: INTEGER (long)</P>
*/
public static final String DATE = "date";

/**
* The box which the message belong to, for example, MESSAGE_BOX_INBOX.
* <P>Type: INTEGER</P>
*/
public static final String MESSAGE_BOX = "msg_box";

/**
* Has the message been read.
* <P>Type: INTEGER (boolean)</P>
*/
public static final String READ = "read";

/**
* The Message-ID of the message.
* <P>Type: TEXT</P>
*/
public static final String MESSAGE_ID = "m_id";

/**
* The subject of the message, if present.
* <P>Type: TEXT</P>
*/
public static final String SUBJECT = "sub";

/**
* The character set of the subject, if present.
* <P>Type: INTEGER</P>
*/
public static final String SUBJECT_CHARSET = "sub_cs";

/**
* The Content-Type of the message.
* <P>Type: TEXT</P>
*/
public static final String CONTENT_TYPE = "ct_t";

/**
* The Content-Location of the message.
* <P>Type: TEXT</P>
*/
public static final String CONTENT_LOCATION = "ct_l";

/**
* The address of the sender.
* <P>Type: TEXT</P>
*/
public static final String FROM = "from";

/**
* The address of the recipients.
* <P>Type: TEXT</P>
*/
public static final String TO = "to";

/**
* The address of the cc. recipients.
* <P>Type: TEXT</P>
*/
public static final String CC = "cc";

/**
* The address of the bcc. recipients.
* <P>Type: TEXT</P>
*/
public static final String BCC = "bcc";

/**
* The expiry time of the message.
* <P>Type: INTEGER</P>
*/
public static final String EXPIRY = "exp";

/**
* The class of the message.
* <P>Type: TEXT</P>
*/
public static final String MESSAGE_CLASS = "m_cls";

/**
* The type of the message defined by MMS spec.
* <P>Type: INTEGER</P>
*/
public static final String MESSAGE_TYPE = "m_type";

/**
* The version of specification that this message conform.
* <P>Type: INTEGER</P>
*/
public static final String MMS_VERSION = "v";

/**
* The size of the message.
* <P>Type: INTEGER</P>
*/
public static final String MESSAGE_SIZE = "m_size";

/**
* The priority of the message.
* <P>Type: TEXT</P>
*/
public static final String PRIORITY = "pri";

/**
* The read-report of the message.
* <P>Type: TEXT</P>
*/
public static final String READ_REPORT = "rr";

/**
* Whether the report is allowed.
* <P>Type: TEXT</P>
*/
public static final String REPORT_ALLOWED = "rpt_a";

/**
* The response-status of the message.
* <P>Type: INTEGER</P>
*/
public static final String RESPONSE_STATUS = "resp_st";

/**
* The status of the message.
* <P>Type: INTEGER</P>
*/
public static final String STATUS = "st";

/**
* The transaction-id of the message.
* <P>Type: TEXT</P>
*/
public static final String TRANSACTION_ID = "tr_id";

/**
* The retrieve-status of the message.
* <P>Type: INTEGER</P>
*/
public static final String RETRIEVE_STATUS = "retr_st";

/**
* The retrieve-text of the message.
* <P>Type: TEXT</P>
*/
public static final String RETRIEVE_TEXT = "retr_txt";

/**
* The character set of the retrieve-text.
* <P>Type: TEXT</P>
*/
public static final String RETRIEVE_TEXT_CHARSET = "retr_txt_cs";

/**
* The read-status of the message.
* <P>Type: INTEGER</P>
*/
public static final String READ_STATUS = "read_status";

/**
* The content-class of the message.
* <P>Type: INTEGER</P>
*/
public static final String CONTENT_CLASS = "ct_cls";

/**
* The delivery-report of the message.
* <P>Type: INTEGER</P>
*/
public static final String DELIVERY_REPORT = "d_rpt";

/**
* The delivery-time-token of the message.
* <P>Type: INTEGER</P>
*/
public static final String DELIVERY_TIME_TOKEN = "d_tm_tok";

/**
* The delivery-time of the message.
* <P>Type: INTEGER</P>
*/
public static final String DELIVERY_TIME = "d_tm";

/**
* The response-text of the message.
* <P>Type: TEXT</P>
*/
public static final String RESPONSE_TEXT = "resp_txt";

/**
* The sender-visibility of the message.
* <P>Type: TEXT</P>
*/
public static final String SENDER_VISIBILITY = "s_vis";

/**
* The reply-charging of the message.
* <P>Type: INTEGER</P>
*/
public static final String REPLY_CHARGING = "r_chg";

/**
* The reply-charging-deadline-token of the message.
* <P>Type: INTEGER</P>
*/
public static final String REPLY_CHARGING_DEADLINE_TOKEN = "r_chg_dl_tok";

/**
* The reply-charging-deadline of the message.
* <P>Type: INTEGER</P>
*/
public static final String REPLY_CHARGING_DEADLINE = "r_chg_dl";

/**
* The reply-charging-id of the message.
* <P>Type: TEXT</P>
*/
public static final String REPLY_CHARGING_ID = "r_chg_id";

/**
* The reply-charging-size of the message.
* <P>Type: INTEGER</P>
*/
public static final String REPLY_CHARGING_SIZE = "r_chg_sz";

/**
* The previously-sent-by of the message.
* <P>Type: TEXT</P>
*/
public static final String PREVIOUSLY_SENT_BY = "p_s_by";

/**
* The previously-sent-date of the message.
* <P>Type: INTEGER</P>
*/
public static final String PREVIOUSLY_SENT_DATE = "p_s_d";

/**
* The store of the message.
* <P>Type: TEXT</P>
*/
public static final String STORE = "store";

/**
* The mm-state of the message.
* <P>Type: INTEGER</P>
*/
public static final String MM_STATE = "mm_st";

/**
* The mm-flags-token of the message.
* <P>Type: INTEGER</P>
*/
public static final String MM_FLAGS_TOKEN = "mm_flg_tok";

/**
* The mm-flags of the message.
* <P>Type: TEXT</P>
*/
public static final String MM_FLAGS = "mm_flg";

/**
* The store-status of the message.
* <P>Type: TEXT</P>
*/
public static final String STORE_STATUS = "store_st";

/**
* The store-status-text of the message.
* <P>Type: TEXT</P>
*/
public static final String STORE_STATUS_TEXT = "store_st_txt";

/**
* The stored of the message.
* <P>Type: TEXT</P>
*/
public static final String STORED = "stored";

/**
* The totals of the message.
* <P>Type: TEXT</P>
*/
public static final String TOTALS = "totals";

/**
* The mbox-totals of the message.
* <P>Type: TEXT</P>
*/
public static final String MBOX_TOTALS = "mb_t";

/**
* The mbox-totals-token of the message.
* <P>Type: INTEGER</P>
*/
public static final String MBOX_TOTALS_TOKEN = "mb_t_tok";

/**
* The quotas of the message.
* <P>Type: TEXT</P>
*/
public static final String QUOTAS = "qt";

/**
* The mbox-quotas of the message.
* <P>Type: TEXT</P>
*/
public static final String MBOX_QUOTAS = "mb_qt";

/**
* The mbox-quotas-token of the message.
* <P>Type: INTEGER</P>
*/
public static final String MBOX_QUOTAS_TOKEN = "mb_qt_tok";

/**
* The message-count of the message.
* <P>Type: INTEGER</P>
*/
public static final String MESSAGE_COUNT = "m_cnt";

/**
* The start of the message.
* <P>Type: INTEGER</P>
*/
public static final String START = "start";

/**
* The distribution-indicator of the message.
* <P>Type: TEXT</P>
*/
public static final String DISTRIBUTION_INDICATOR = "d_ind";

/**
* The element-descriptor of the message.
* <P>Type: TEXT</P>
*/
public static final String ELEMENT_DESCRIPTOR = "e_des";

/**
* The limit of the message.
* <P>Type: INTEGER</P>
*/
public static final String LIMIT = "limit";

/**
* The recommended-retrieval-mode of the message.
* <P>Type: INTEGER</P>
*/
public static final String RECOMMENDED_RETRIEVAL_MODE = "r_r_mod";

/**
* The recommended-retrieval-mode-text of the message.
* <P>Type: TEXT</P>
*/
public static final String RECOMMENDED_RETRIEVAL_MODE_TEXT = "r_r_mod_txt";

/**
* The status-text of the message.
* <P>Type: TEXT</P>
*/
public static final String STATUS_TEXT = "st_txt";

/**
* The applic-id of the message.
* <P>Type: TEXT</P>
*/
public static final String APPLIC_ID = "apl_id";

/**
* The reply-applic-id of the message.
* <P>Type: TEXT</P>
*/
public static final String REPLY_APPLIC_ID = "r_apl_id";

/**
* The aux-applic-id of the message.
* <P>Type: TEXT</P>
*/
public static final String AUX_APPLIC_ID = "aux_apl_id";

/**
* The drm-content of the message.
* <P>Type: TEXT</P>
*/
public static final String DRM_CONTENT = "drm_c";

/**
* The adaptation-allowed of the message.
* <P>Type: TEXT</P>
*/
public static final String ADAPTATION_ALLOWED = "adp_a";

/**
* The replace-id of the message.
* <P>Type: TEXT</P>
*/
public static final String REPLACE_ID = "repl_id";

/**
* The cancel-id of the message.
* <P>Type: TEXT</P>
*/
public static final String CANCEL_ID = "cl_id";

/**
* The cancel-status of the message.
* <P>Type: INTEGER</P>
*/
public static final String CANCEL_STATUS = "cl_st";

/**
* The thread ID of the message
* <P>Type: INTEGER</P>
*/
public static final String THREAD_ID = "thread_id";

/**
* Has the message been locked?
* <P>Type: INTEGER (boolean)</P>
*/
public static final String LOCKED = "locked";
}


2、part表

mmssms.db库中的part表存储了彩信内容(文本、音乐、图象)的文件名(即上面将的app_parts下面的文件名)、文件类型信息。

其中“mid”对应着pdu表中的“_id”,“ct”是文件类型,“_data”是存储路径。

3 。 彩信文件读取

彩信附件文件的地址存储在mmssms.db的part表的_data字段,形如“/data/data
/com.android.providers.telephony/app_parts/PART_1262693697763”,但在应用中读取彩信
附件时,这个字段基本没什么用,因为不能直接读取这个文件。读取同样要通过ContentProvider,URI为“content://mms
/part”,该URI就是对应着part表。可以使用下列代码段来读取文件:

String selection = new String("mid='" + key + "'");//这个key就是pdu里面的_id。

Cursor cur = getContentResolver().query(Uri.parse("content://mms/part"), null, selection, null, null);

if (cur.moveToFirst())

do {

int _partID = cur.getInt(cur.getColumnIndex("_id"));

String partID = String.valueOf(_partID);

Uri partURI = Uri.parse("content://mms/part/" + partID);

ByteArrayOutputStream baos = new ByteArrayOutputStream();

InputStream is = null;

try {

is = getContentResolver().openInputStream(partURI);

byte[] buffer = new byte[256];

int len = is.read(buffer);

while (len >= 0)

{

baos.write(buffer, 0, len);

len = is.read(buffer);

}

} catch (IOException e) {

} finally {

if (is != null) {

try {

is.close();

} catch (IOException e) {

}

}

}

}

这里得到的baos,就是附件文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: