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,就是附件文件。
相关文章推荐
- Android短信彩信开发手记(一):数据库相关
- Android短信彩信开发手记(一):数据库相关
- Android 短信转换成彩信的消息数量(实例代码)
- 还原Android彩信数据库
- android读取短信彩信
- Android实现将已发送的短信写入短信数据库的方法
- 转:android实现发送短信并保存到数据库,同时可以获得发送报告和接收报告
- Android 监听短信(同时监听广播和数据库)
- Android 6.1 短信彩信导入 Android 7.1.1
- android短彩信数据库设计源码解析(一)
- android 查看系统数据库——以短信为例
- Android短信数据库简析
- 02_android入门_实现短信/彩信发送的功能
- Android 监听短信(同时监听广播和数据库)
- Android短彩信数据库解析
- Android短彩信数据库解析
- Android 中短信数据库的简单操作
- Android短彩信源码解析-短信发送流程(二)
- Android 短信模块分析(五) MMS之彩信的发送与接收
- [android]_[初级][插入短信数据到短信数据库]