androidのsms,mms短彩信数据库

androidのsms,mms短彩信数据库

1. MMS DB
 Path: /data/data/com.android.providers.telephony/databases/mmssms.db 
 主要相关类
  MmsSmsDatabaseHelper.java
 主要的表
 1).   threads表
  2).   存放短信的表(sms表)

 3).   存放彩信的表(pdu表,part表)

 4).   存放phone number的表( Canonical_address表)


2. sms 表
    
  _id              一个自增字段,从1开始
thread_id    序号,同一个会话中他们的thread_id是一样的也就是说通过thread_id就可以知道A与B在聊天 还是 A与C在聊天
address       发件人手机号码
m_size         短信数据大小
person        联系人列表里的序号,陌生人为null 
date            发送或接收的时间
protocol     协议,分为: 0 SMS_RPOTO, 1 MMS_PROTO  
read           是否阅读:0未读, 1已读  
status         状态 -1接收,0 complete, 64 pending, 128 failed 
type             1表示接收 2 表示发出
                  ALL    = 0;
                  INBOX  = 1;  //接受
                  SENT   = 2;  //发出
                  DRAFT  = 3;
                  OUTBOX = 4;
                  FAILED = 5;
                 QUEUED = 6;
 
body                    短信内容, (注意,虽然在thread表的snippet字段已经存储了一部分body,但是那里的并不全,仅仅是一部分body)
service_center     短信服务中心号码编号
subject                短信的主题
reply_path_present     TP-Reply-Path
locked   
特别看下 status 和 type 字段内容 
status 字段--- 某条短信的发送报告状态 (如果该短信是接受短信为 -1, 如果短信 没有返回发送报告 为-1,如果短信有发送报告返回 为 0 ,)  
                          32 表示 pending 延迟
                          64 表示未发送成功,失败
                          0  完成
                         -1  默认
*****************************************************************
       Telephony. java 中: 
        public static final int STATUS_NONE = -1;
        public static final int STATUS_COMPLETE = 0;
        /// M: Add for resolving bug, CDMA card request deliver report.
        public static final int STATUS_REPLACED_BY_SC = 2;
        public static final int STATUS_PENDING = 32;
        public static final int STATUS_FAILED = 64;

type 字段  ----短信发送类型 (接受类型 还是 发送类型的 , 常见的 1 表示接受 ,2 表示发送)               
**********************************************************************************
        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
**********************************************************************************

3.  查询未读短信彩信
  查询未读彩信个数。 
Cursor cursor = context.getContentResolver().query(Uri.parse("content://sms"), null,
    "type = 1 and read = 0", null, null);
   int mmsCount = 0;
   if (cursor != null) {
      try {
          mmsCount = cursor.getCount();
      } finally {
          cursor.close();
          cursor = null;
      }
}
 查询未读短信个数
 cursor =context.getContentResolver().query(Uri.parse("content://mms/inbox"),
         null, "read = 0", null, null);
        int smsCount = 0;
        if (cursor != null) {
        try {
                smsCount = cursor.getCount();
        } finally {
               cursor.close();
        }
        }
Log.d(TAG, "blueberry_ mmsCount=" + mmsCount + ", smsCount=" + smsCount + ", mCreateTime=" + mCreateTime); 

                          

你可能感兴趣的:(android,sms,短信,彩信,MMS)