轉載原文: http://labs.ywlx.net/?p=899 SMS 常用URI some Available Uri string for sms. String strUriInbox = "content://sms/inbox"; //SMS_INBOX:1 收件箱 String strUriFailed = "content://sms/failed"; //SMS_FAILED:2 失败的 String strUriQueued = "content://sms/queued"; //SMS_QUEUED:3 队列中 String strUriSent = "content://sms/sent"; //SMS_SENT:4 已发送 String strUriDraft = "content://sms/draft"; //SMS_DRAFT:5 草稿箱中 String strUriOutbox = "content://sms/outbox"; //SMS_OUTBOX:6 待发箱 String strUriUndelivered = "content://sms/undelivered"; //SMS_UNDELIVERED 未送达 String strUriAll = "content://sms/all"; //SMS_ALL String strUriConversations = "content://sms/conversations"; //you can delete one conversation by thread_id String strUriAll = "content://sms" //you can delete one message by _id 這是從網路上找到的一份資料,挺實用的,記錄並轉載於此。 Android提供了很多查询系统数据的Uri,这里是一些关于MMS,SMS常用的Uri以及对其的一些分析 Uri: content://sms sql语句: SELECT * FROM sms WHERE ({where}) ORDER BY date DESC 可用列: _id:thread_id:address:person:date:protocol:read:status:type:reply_path_present: subject:body:service_center:locked:error_code:seen: Uri: content://mms sql语句: SELECT * FROM pdu WHERE ({where}) ORDER BY date DESC 可用列: _id:thread_id:date:msg_box:read:m_id:sub:sub_cs:ct_t:ct_l:exp:m_cls:m_type: v:m_size:pri:rr:rpt_a:resp_st:st:tr_id:retr_st:retr_txt:retr_txt_cs:read_status:ct_cls: resp_txt:d_tm:d_rpt:locked:seen: Uri: content://mms/threads (selection须为null) sql语句: SELECT * FROM pdu group by thread_id 可用列: _id:thread_id:date:msg_box:read:m_id:sub:sub_cs:ct_t:ct_l:exp:m_cls:m_type: v:m_size:pri:rr:rpt_a:resp_st:st:tr_id:retr_st:retr_txt:retr_txt_cs:read_status:ct_cls: resp_txt:d_tm:d_rpt:locked:seen: Uri: content://mms/{id}/part (id为pdu表_id,part表mid,pending_msgs表msg_id) sql语句: SELECT * FROM part WHERE (mid={id}) AND ({where}) ORDER BY seq 可用列: _id:mid:seq:ct:name:chset:cd:fn:cid:cl:ctt_s:ctt_t:_data:text: Uri: content://mms/part/{id} (id为part表的_id) sql语句: SELECT * FROM part WHERE (_id={id}) AND ({where}) ORDER BY seq 可用列: _id:mid:seq:ct:name:chset:cd:fn:cid:cl:ctt_s:ctt_t:_data:text: Uri: content://mms/{id}/addr (id为pdu表_id,part表mid,pending_msgs表msg_id) sql语句: SELECT * FROM addr WHERE (msg_id={id}) AND ({where}) 可用列: _id:msg_id:contact_id:address:type:charset: Uri: content://mms-sms/complete-conversations (projection必须指定可用列,否则该列返回null) sql语句: SELECT {projection} FROM (SELECT DISTINCT date * 1 AS normalized_date, {projection} FROM sms WHERE ({where}) AND (type != 3)) UNION SELECT DISTINCT date * 1000 AS normalized_date, {projection} FROM pdu LEFT JOIN pending_msgs ON pdu._id = pending_msgs.msg_id WHERE ({where}) AND msg_box != 3 AND (msg_box != 3 AND (m_type = 128 OR m_type = 132 OR m_type = 130))) ORDER BY normalized_date ASC) 可用列: 一切sms,pdu,pending_msgs中的列均可用,不存在则返回null Uri: content://mms-sms/conversations (同上) sql语句: SELECT {projection} FROM (SELECT thread_id AS tid, date * 1000 AS normalized_date, NULL AS body, NULL AS person, sub, NULL AS subject, retr_st, NULL AS type, date, ct_cls, sub_cs, _id, read, ct_l, tr_id, st, msg_box, thread_id, NULL AS reply_path_present, m_cls, read_status, ct_t, NULL AS status, retr_txt_cs, d_rpt, NULL AS error_code, m_id, m_type, v, exp, pri, NULL AS service_center, NULL AS address, rr, rpt_a, resp_txt, locked, resp_st, m_size FROM pdu WHERE ({where}) AND (msg_box != 3 AND (m_type = 128 OR m_type = 132 OR m_type = 130))) GROUP BY thread_id HAVING date = MAX(date) UNION SELECT thread_id AS tid, date * 1 AS normalized_date, body, person, NULL AS sub, subject, NULL AS retr_st, type, date, NULL AS ct_cls, NULL AS sub_cs, _id, read, NULL AS ct_l, NULL AS tr_id, NULL AS st, NULL AS msg_box, thread_id, reply_path_present, NULL AS m_cls, NULL AS read_status, NULL AS ct_t, status, NULL AS retr_txt_cs, NULL AS d_rpt, error_code, NULL AS m_id, NULL AS m_type, NULL AS v, NULL AS exp, NULL AS pri, service_center, address, NULL AS rr, NULL AS rpt_a, NULL AS resp_txt, locked, NULL AS resp_st, NULL AS m_size FROM sms WHERE ({where}) AND (type != 3)) GROUP BY thread_id HAVING date = MAX(date)) GROUP BY tid HAVING normalized_date = MAX(normalized_date) 可用列: 同上 content://mms-sms/conversations/{threadID} (threadID为sms表的thread_id,pdu表的_id,pending_msgs表的msg_id,part表的mid) sql语句: SELECT {projection} FROM (SELECT DISTINCT date * 1 AS normalized_date, {projection} FROM sms WHERE ({where}) AND thread_id = {thread_id} AND (type != 3)) UNION SELECT DISTINCT date * 1000 AS normalized_date, pdu._id, NULL AS body FROM pdu LEFT JOIN pending_msgs ON pdu._id = pending_msgs.msg_id WHERE ({where}) AND thread_id = {thread_id} AND msg_box != 3 AND (msg_box != 3 AND (m_type = 128 OR m_type = 132 OR m_type = 130))) ORDER BY normalized_date ASC) 同上 以下是Android提供的关于MMS,SMS的各种Uri content://sms content://sms/# content://sms/inbox content://sms/inbox/# content://sms/sent content://sms/sent/# content://sms/draft content://sms/draft/# content://sms/outbox content://sms/outbox/# content://sms/undelivered content://sms/failed content://sms/failed/# content://sms/queued content://sms/conversations content://sms/conversations/* content://sms/raw content://sms/attachments content://sms/attachments/# content://sms/threadID content://sms/threadID/* content://sms/status/# content://sms/sr_pending content://sms/icc content://sms/icc/# content://sms/sim content://sms/sim/# content://mms content://mms/# content://mms/inbox content://mms/inbox/# content://mms/sent content://mms/sent/# content://mms/drafts content://mms/drafts/# content://mms/outbox content://mms/outbox/# content://mms/part content://mms/#/part content://mms/part/# content://mms/#/addr content://mms/rate content://mms/report-status/# content://mms/report-request/# content://mms/drm content://mms/drm/# content://mms/threads content://mms/scrapSpace content://mms-sms/conversations content://mms-sms/complete-conversations // In these patterns, “#” is the thread ID. content://mms-sms/conversations/# content://mms-sms/conversations/#/recipients content://mms-sms/conversations/#/subject // URI for deleting obsolete threads. content://mms-sms/conversations/obsolete”, URI_OBSOLETE_THREADS); content://mms-sms/messages/byphone/* // In this pattern, two query parameter names are expected: // “subject” and “recipient.” Multiple “recipient” parameters // may be present. content://mms-sms/threadID // Use this pattern to query the canonical address by given ID. content://mms-sms/canonical-address/# // Use this pattern to query all canonical addresses. content://mms-sms/canonical-addresses content://mms-sms/search // In this pattern, two query parameters may be supplied: // “protocol” and “message.” For example: // content://mms-sms/pending? // -> Return all pending messages; // content://mms-sms/pending?protocol=sms // -> Only return pending SMs; // content://mms-sms/pending?protocol=mms&message=1 // -> Return the the pending MM which ID equals ’1′. // content://mms-sms/pending // Use this pattern to get a list of undelivered messages. content://mms-sms/undelivered // Use this pattern to see what delivery status reports (for // both MMS and SMS) have not been delivered to the user. content://mms-sms/notifications content://mms-sms/draft content://mms-sms/locked content://mms-sms/locked/# |