存儲路徑:
/data/data/com.android.providers.telephony/databases/mmssms.db
數據表
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表用於存儲接收中的長短信或分段彩信通知。drm用於彩信權限管理。words開頭的表存儲了短彩信中的單詞,用於搜索時使用。attachments、rate、sr_pending表作用未知。android_metadata表存儲的是語言信息,就一條記錄。
下面是一些常用表的字段及其說明:
threads表(會話)
|   列名  |  
             類型  |  
             說明  |  
          
|   _id  |  
             integer  |  
             唯一標識,自增,從1開始  |  
          
|   date  |  
             integer  |  
             會話最新更新時間  |  
          
|   message_count  |  
             integer  |  
             當前會話所包含的消息數量  |  
          
|   recipient_ids  |  
             text  |  
             接收者(canonical_addresses表的id)列表,所有接收者以空格隔開  |  
          
|   snippet  |  
             text  |  
             最新更新的消息的內容(彩信為主題,短信為正文)  |  
          
|   snippet_cs  |  
             integer  |  
             snippet的編碼方式,彩信:UTF-8為106,短信為0  |  
          
|   read  |  
             integer  |  
             是否有未讀信息:0-未讀,1-已讀  |  
          
|   type  |  
             integer  |  
             會話類型,0-普通會話(只有一個接收者),1-廣播會話(多個接收者)  |  
          
|   error  |  
             integer  |  
             發送失敗的消息(type=5)的數量  |  
          
|   has_attachment  |  
             integer  |  
             是否有附件:0-無,1-有  |  
          
sms表(短信)
|   列名  |  
             類型  |  
             說明  |  
          
|   _id  |  
             integer  |  
             唯一標識,自增,從1開始  |  
          
|   thread_id  |  
             integer  |  
             threads表的id  |  
          
|   address  |  
             text  |  
             接收者手機號碼,對於一個會話,有可能含有多個接收者,每個人都將收到一條短信  |  
          
|   person  |  
             integer  |  
             聯系人(模塊)列表里的序號,陌生人為null  |  
          
|   date  |  
             integer  |  
             時間,以豪秒來表示  |  
          
|   protocol  |  
             integer  |  
             協議,分為:0-SMS_RPOTO,1-MMS_PROTO。成功發送后設置。  |  
          
|   read  |  
             integer  |  
             是否閱讀:0-未讀,1-已讀  |  
          
|   status  |  
             integer  |  
             狀態:-1默認值,0-complete,64-pending,128-failed  |  
          
|   type  |  
             integer  |  
             ALL=0;INBOX=1;SENT=2;DRAFT=3;OUTBOX=4;FAILED=5;QUEUED=6;  |  
          
|   reply_path_present  |  
             integer  |  
             TP-Reply-Path位的值 0/1  |  
          
|   subject  |  
             text  |  
             短信的主題,默認為空  |  
          
|   body  |  
             text  |  
             短信內容  |  
          
|   service_center  |  
             text  |  
             短信服務中心號碼編號  |  
          
|   locked  |  
             integer  |  
             此條短信是否已由用戶鎖定,0-未鎖定,1-已鎖定  |  
          
|   error_code  |  
             integer  |  
             錯誤代碼,有哪些值暫時未知  |  
          
|   seen  |  
             integer  |  
             用於指明該消息是否已被用戶看到(非閱讀,點開會話列表即可,不用打開會話),僅對收到的消息有用  |  
          
pdu表(彩信)
|   列名  |  
             類型  |  
             說明  |  
          
|   _id  |  
             integer  |  
             唯一標識,自增,從1開始  |  
          
|   thread_id  |  
             integer  |  
             threads表的id  |  
          
|   date  |  
             integer  |  
             時間,以秒來表示(與短信的不同)  |  
          
|   msg_box  |  
             integer  |  
             此條彩信屬於哪個信箱,all為0,inbox為1,sent為2,draft為3,outbox為4,failed為5  |  
          
|   read  |  
             integer  |  
             此條彩信是否已讀:0-未讀,1-已讀  |  
          
|   m_id  |  
             text  |  
             Message-ID,由彩信服務器分配的消息id  |  
          
|   sub  |  
             text  |  
             此條彩信主題  |  
          
|   sub_cs  |  
             integer  |  
             此條彩信主題編碼方式:UTF-8為106  |  
          
|   ct_t  |  
             text  |  
             彩信對應的Content-Type是application/vnd.wap.multipart.related  |  
          
|   ct_l  |  
             text  |  
             X-Mms-Content-Location  |  
          
|   exp  |  
             integer  |  
             X-Mms-Expiry,彩信有效期  |  
          
|   m_cls  |  
             text  |  
             X-Mms-Message-Class,此條彩信的用途:auto,advertisement,personal,informational  |  
          
|   m_type  |  
             integer  |  
             X-Mms-Message-Type,由MMS協議定義的彩信類型,其中send-req為128、notification-ind為130、retrieve-conf為132  |  
          
|   v  |  
             integer  |  
             X-Mms-MMS-Version,此條彩信對應的MMS協議的版本號,1.0 16,1.1 17,1.2 18,1.3 19  |  
          
|   m_size  |  
             integer  |  
             X-Mms-MessageSize  |  
          
|   pri  |  
             integer  |  
             X-Mms-Priority,此條彩信的優先級,normal 129,low 128,high 130  |  
          
|   rr  |  
             integer  |  
             X-Mms-Read-Report,此條彩信的閱讀報告,129  |  
          
|   rpt_a  |  
             integer  |  
             X-Mms-Report-Allowed  |  
          
|   resp_st  |  
             integer  |  
             X-Mms-Response-Status  |  
          
|   st  |  
             integer  |  
             該彩信的下載狀態,未啟動-128,下載中-129,傳輸失敗-130,保存失敗-135  |  
          
|   tr_id  |  
             text  |  
             X-Mms-Transaction-Id,事務標識  |  
          
|   retr_st  |  
             integer  |  
             X-Mms-Retrieve-Status  |  
          
|   retr_txt  |  
             text  |  
             X-Mms-Retrieve-Text  |  
          
|   retr_txt_cs  |  
             integer  |  
             RETRIEVE_TEXT的編碼方式  |  
          
|   read_status  |  
             integer  |  
             X-Mms-Read-Status  |  
          
|   ct_cls  |  
             integer  |  
             X-Mms-Content-Class  |  
          
|   resp_txt  |  
             text  |  
             X-Mms-Response-Text  |  
          
|   d_tm  |  
             integer  |  
             X-Mms-Delivery-Time  |  
          
|   d_rpt  |  
             integer  |  
             X-Mms-Delivery-Report,此條彩信的傳輸報告,是-128,否-129  |  
          
|   locked  |  
             integer  |  
             此條彩信是否已由用戶鎖定,0-未鎖定,1-已鎖定  |  
          
|   seen  |  
             integer  |  
             用於指明該消息是否已被用戶看到(非閱讀,點開會話列表即可,不用打開會話),僅對收到的消息有用  |  
          
part表(附件)
|   列名  |  
             類型  |  
             說明  |  
          
|   _id  |  
             integer  |  
             唯一標識,自增,從1開始  |  
          
|   mid  |  
             integer  |  
             pdu表的id  |  
          
|   seq  |  
             integer  |  
             標志part的順序,若ct為application/smil,則為-1,否則為0  |  
          
|   ct  |  
             text  |  
             此PART內容類型,如果是彩信始末:application/smil;如果是文本附件:text/plain;圖像附件:jpg:image/jpeg,gif:image/gif;音頻附件:audio/mpeg  |  
          
|   name  |  
             text  |  
             該PART的名字  |  
          
|   chset  |  
             integer  |  
             該PART的編碼方式,UTF-8為106  |  
          
|   cd  |  
             text  |  
             CONTENT_DISPOSITION  |  
          
|   fn  |  
             text  |  
             該PART的文件名稱  |  
          
|   cid  |  
             text  |  
             CONTENT_ID,該PART內容的id  |  
          
|   cl  |  
             text  |  
             該PART的文件的位置  |  
          
|   ctt_s  |  
             integer  |  
             CONTENT_TYPE內容類型在消息中的起始位置,未在代碼中設置  |  
          
|   ctt_t  |  
             text  |  
             CONTENT_TYPE內容類型的類型,未在代碼中設置  |  
          
|   _data  |  
             text  |  
             彩信附件在手機上的地址  |  
          
|   text  |  
             text  |  
             如果是彩信始末,為彩信的SMIL內容;如果是文本附件,為附件內容;如果是視頻、音頻附件,此參數為空  |  
          
addr表
|   列名  |  
             類型  |  
             說明  |  
          
|   _id  |  
             integer  |  
             唯一標識,自增,從1開始  |  
          
|   msg_id  |  
             integer  |  
             pdu表的id  |  
          
|   contact_id  |  
             integer  |  
             電話本中聯系人的id  |  
          
|   address  |  
             text  |  
             電話號碼,如果為insert-address-token且type為151,說明為本機號碼  |  
          
|   type  |  
             integer  |  
             電話號碼的類型,必須為PduHeaders.BCC-129,PduHeaders.CC-130,PduHeaders.FROM-137,PduHeaders.TO-151之一  |  
          
|   charset  |  
             integer  |  
             電話號碼編碼方式  |  
          
canonical_addresses表
|   列名  |  
             類型  |  
             說明  |  
          
|   _id  |  
             integer  |  
             唯一標識,自增,從1開始  |  
          
|   address  |  
             text  |  
             所有曾經使用過的接收者的電話號碼,用於threads表標識會話  |  
          
ContentProvider
MMS模塊的數據存儲主要依賴三個ContentProvider:SmsProvider、MmsProvider、MmsSmsProvider,以及一個輔助類Telephony。
其中,SmsProvider用於短信相關數據的存取,MmsProvider用於彩信相關數據的存取,MmsSmsProvider則用於短彩信通用數據的存取,如會話信息、接收者、草稿(公共屬性)等。
Telephony則提供了一系列Uri、常量字符串、列名數組、方法以方便用戶使用這三個ContentProvider。
SmsProvider
短信的uri以content://sms開頭。
可以使用Telephony中的Sms類提供的公共變量進行構造Uri,甚至使用其中提供的一些addMessage(將信息存入各個不同的信箱)、saveMessage(更新已存在的草稿)、addMessageToUri(插入數據到指定Uri)、moveMessageToFolder(將信息移到某一信箱)方法簡化操作。
UriMatcher中配置了27種類型:
|   AUTHORITY  |  
             PATH  |  
             類型  |  
             說明  |  
          
|   sms  |  
             SMS_ALL  |  
             所有短信  |  
          |
|   sms  |  
             #  |  
             SMS_ALL_ID  |  
             指定了_id的短信  |  
          
|   sms  |  
             inbox  |  
             SMS_INBOX  |  
             位於收件箱的短信  |  
          
|   sms  |  
             inbox/#  |  
             SMS_INBOX_ID  |  
             位於收件箱的指定了_id的短信  |  
          
|   sms  |  
             sent  |  
             SMS_SENT  |  
             已成功發送出去的短信  |  
          
|   sms  |  
             sent/#  |  
             SMS_SENT_ID  |  
             已成功發送出去的指定了_id的短信  |  
          
|   sms  |  
             draft  |  
             SMS_DRAFT  |  
             位於草稿箱的短信  |  
          
|   sms  |  
             draft  |  
             SMS_DRAFT_ID  |  
             位於草稿箱的指定了_id的短信  |  
          
|   sms  |  
             outbox  |  
             SMS_OUTBOX  |  
             已從隊列中取出進行處理但未成功發送出去的短信  |  
          
|   sms  |  
             outbox/#  |  
             SMS_OUTBOX_ID  |  
             已從隊列中取出進行處理但未成功發送出去的指定了_id的短信  |  
          
|   sms  |  
             undelivered  |  
             SMS_UNDELIVERED  |  
             未成功發送出去的短信(包括發送失敗、草稿、隊列中的)  |  
          
|   sms  |  
             failed  |  
             SMS_FAILED  |  
             發送失敗的短信  |  
          
|   sms  |  
             failed/#  |  
             SMS_FAILED_ID  |  
             發送失敗的指定了_id的短信  |  
          
|   sms  |  
             queued  |  
             SMS_QUEUED  |  
             隊列中的短信  |  
          
|   sms  |  
             conversations  |  
             SMS_CONVERSATIONS  |  
             所有會話包含的短信數量、內容、會話id  |  
          
|   sms  |  
             conversations/*  |  
             SMS_CONVERSATIONS_ID  |  
             指定會話id的短信  |  
          
|   sms  |  
             raw  |  
             SMS_RAW_MESSAGE  |  
             raw表中的短信(臨時短信,用於接收長短信時使用)  |  
          
|   sms  |  
             attachments  |  
             SMS_ATTACHMENT  |  
             往attachments表中插入或查詢信息  |  
          
|   sms  |  
             attachments/#  |  
             SMS_ATTACHMENT_ID  |  
             從attachments表中查詢指定sms_id的信息  |  
          
|   sms  |  
             threadID  |  
             SMS_NEW_THREAD_ID  |  
             往canonical_addresses表中插入信息  |  
          
|   sms  |  
             threadID/*  |  
             SMS_QUERY_THREAD_ID  |  
             查詢canonical_addresses中所有信息  |  
          
|   sms  |  
             status/#  |  
             SMS_STATUS_ID  |  
             查詢或更新指定id的短信(沒有什么特殊功能,有可能沒用上)  |  
          
|   sms  |  
             sr_pending  |  
             SMS_STATUS_PENDING  |  
             對sr_pending表進行操作時用的  |  
          
|   sms  |  
             icc  |  
             SMS_ALL_ICC  |  
             所有存在SIM/UIM卡上的短信  |  
          
|   sms  |  
             icc/#  |  
             SMS_ICC  |  
             指定id的存在SIM/UIM卡上的短信  |  
          
|   sms  |  
             sim  |  
             SMS_ALL_ICC  |  
             所有存在SIM/UIM卡上的短信  |  
          
|   sms  |  
             sim/#  |  
             SMS_ICC  |  
             指定id的存在SIM/UIM卡上的短信  |  
          
MmsProvider
短信的uri以content://mms開頭。
可以使用Telephony中的Mms類提供的公共變量進行構造Uri,甚至使用其中提供的一些query(查詢)、isEmailAddress、isPhoneNumber方法簡化操作。
UriMatcher中配置了21種類型:
|   AUTHORITY  |  
             PATH  |  
             類型  |  
             說明  |  
          
|   mms  |  
             MMS_ALL  |  
             所有彩信  |  
          |
|   mms  |  
             #  |  
             MMS_ALL_ID  |  
             指定了id的彩信  |  
          
|   mms  |  
             inbox  |  
             MMS_INBOX  |  
             位於收件箱的彩信  |  
          
|   mms  |  
             inbox/#  |  
             MMS_INBOX_ID  |  
             位於收件箱的指定了_id的彩信  |  
          
|   mms  |  
             sent  |  
             MMS_SENT  |  
             已成功發送出去的彩信  |  
          
|   mms  |  
             sent/#  |  
             MMS_SENT_ID  |  
             已成功發送出去的指定了_id的彩信  |  
          
|   mms  |  
             drafts  |  
             MMS_DRAFTS  |  
             位於草稿箱的彩信  |  
          
|   mms  |  
             drafts/#  |  
             MMS_DRAFTS_ID  |  
             位於草稿箱的指定了_id的彩信  |  
          
|   mms  |  
             outbox  |  
             MMS_OUTBOX  |  
             已開始進行處理但未成功發送出去的短信  |  
          
|   mms  |  
             outbox/#  |  
             MMS_OUTBOX_ID  |  
             已開始進行處理但未成功發送出去的指定了_id的短信  |  
          
|   mms  |  
             part  |  
             MMS_ALL_PART  |  
             對part表的查詢與刪除  |  
          
|   mms  |  
             #/part  |  
             MMS_MSG_PART  |  
             對part表的指定了msg_id的記錄的增、刪、改、查  |  
          
|   mms  |  
             part/#  |  
             MMS_PART_ID  |  
             對part表的指定了id的記錄的刪、改、查  |  
          
|   mms  |  
             #/addr  |  
             MMS_MSG_ADDR  |  
             對addr表的指定了msg_id的記錄的增、刪、查  |  
          
|   mms  |  
             rate  |  
             MMS_SENDING_RATE  |  
             查詢rate表中的信息,刪除1小時以前的記錄並插入新記錄  |  
          
|   mms  |  
             report-status/#  |  
             MMS_REPORT_STATUS  |  
             查詢指定id的彩信的狀態(SQL語句很復雜)  |  
          
|   mms  |  
             report-request/#  |  
             MMS_REPORT_REQUEST  |  
             查詢指定id的,addr表的type為151的彩信(同report-status一起使用)  |  
          
|   mms  |  
             drm  |  
             MMS_DRM_STORAGE  |  
             對drm表的刪除與插入  |  
          
|   mms  |  
             drm/#  |  
             MMS_DRM_STORAGE_ID  |  
             對指定了id的drm表的數據的查詢  |  
          
|   mms  |  
             threads  |  
             MMS_THREADS  |  
             對pdu表按thread_id分組統計(即獲取所有包含彩信的thread_id)  |  
          
|   mms  |  
             scrapSpace  |  
             MMS_SCRAP_SPACE  |  
             當添加附件時選擇拍照,用於獲取臨時存儲空間時使用  |  
          
MmsSmsProvider
該ContentProvider的uri以content://mms-sms開頭。
可以使用Telephony中的MmsSms類提供的公共變量進行構造Uri。
UriMatcher中配置了18種類型:
|   AUTHORITY  |  
             PATH  |  
             類型  |  
             說明  |  
          
|   mms-sms  |  
             conversations  |  
             URI_CONVERSATIONS  |  
             用於刪除所有會話或查詢所有會話(查詢分兩種模式:1、指定了simple為true,則僅僅從threads表中查詢數據;2、未指定,則分別從sms和pdu表查詢最新的不算草稿的短信和彩信)  |  
          
|   mms-sms  |  
             complete-conversations  |  
             URI_COMPLETE_CONVERSATION  |  
             查詢已完成的消息(包括非草稿短彩信,已完全接收或已發送出去的彩信)  |  
          
|   mms-sms  |  
             conversations/#  |  
             URI_CONVERSATIONS_MESSAGES  |  
             用於查詢(指定id的會話的消息)、刪除、更新(分別更新pdu和sms表)指定id的會話  |  
          
|   mms-sms  |  
             conversations/#/recipients  |  
             URI_CONVERSATIONS_RECIPIENTS  |  
             用於查詢指定id的會話  |  
          
|   mms-sms  |  
             conversations/#/subject  |  
             URI_CONVERSATIONS_SUBJECT  |  
             同上  |  
          
|   mms-sms  |  
             conversations/obsolete  |  
             URI_OBSOLETE_THREADS  |  
             用於刪除沒有消息的會話  |  
          
|   mms-sms  |  
             messages/byphone/*  |  
             URI_MESSAGES_BY_PHONE  |  
             用於查詢接收者中包含指定電話號碼的消息  |  
          
|   mms-sms  |  
             threadID  |  
             URI_THREAD_ID  |  
             獲取指定接收者(附加的查詢參數recipient)的會話id,若不存在,新增  |  
          
|   mms-sms  |  
             canonical-address/#  |  
             URI_CANONICAL_ADDRESS  |  
             查詢或更新指定id的canonical_address表中的數據  |  
          
|   mms-sms  |  
             canonical-addresses  |  
             URI_CANONICAL_ADDRESSES  |  
             查詢canonical_address表中的數據  |  
          
|   mms-sms  |  
             search  |  
             URI_SEARCH  |  
             從短信和彩信中搜索符合給定的pattern的數據  |  
          
|   mms-sms  |  
             searchSuggest  |  
             URI_SEARCH_SUGGEST  |  
             從word表中搜索符合給定的pattern的數據,上限50條  |  
          
|   mms-sms  |  
             pending  |  
             URI_PENDING_MSG  |  
             查詢(可指定protocol為sms或mms,message為某個msg_id)或更新pending_msgs表  |  
          
|   mms-sms  |  
             undelivered  |  
             URI_UNDELIVERED_MSG  |  
             查詢所有未成功發送的短信與彩信  |  
          
|   mms-sms  |  
             notifications  |  
             URI_NOTIFICATIONS  |  
             無代碼處理  |  
          
|   mms-sms  |  
             draft  |  
             URI_DRAFT  |  
             查詢所有短信與彩信的草稿,最多輸出threadid與id列  |  
          
|   mms-sms  |  
             locked  |  
             URI_FIRST_LOCKED_MESSAGE_ALL  |  
             查詢所有會話中的被鎖定的消息,僅輸出1條,用於確定是否有被鎖定的消息  |  
          
|   mms-sms  |  
             locked/#  |  
             URI_FIRST_LOCKED_MESSAGE_BY_THREAD_ID  |  
             查詢指定threadId的會話中的被鎖定的消息,僅輸出1條,用於確定是否有被鎖定的消息  |  
          
