android短信

android会把短信信心保存在数据库中,可查看/dbdata/databases/com.android.providers.telephony/mmssms.db。但是我们不能直接访问数据库,只能通过ContentProvider来访问它。
以下是访问短信数据库的uri
content://sms/inbox        收件箱 
content://sms/sent        已发送 
content://sms/draft        草稿 
content://sms/outbox        发件箱 
content://sms/failed        发送失败 
content://sms/queued        待发送列表
数据库相关字段如下:
_id               一个自增字段,从1开始 
thread_id    序号,同一发信人的id相同 
address      发件人手机号码(根据这个查找联系人姓名?)
person        联系人列表里的序号,陌生人为null 
date            发件日期,单位是milliseconds,从1970/01/01至今所经过的时间)
protocol      协议,分为: 0 SMS_RPOTO, 1 MMS_PROTO  
read           是否阅读,0未读, 1已读  
status         状态,-1接收,0 complete, 64 pending, 128 failed 
type 
    ALL    = 0; 
    INBOX  = 1; 
    SENT   = 2; 
    DRAFT  = 3; 
    OUTBOX = 4; 
    FAILED = 5; 
    QUEUED = 6; 
body                     短信内容 
service_center     短信服务中心号码编号 
subject                  短信的主题 
reply_path_present     TP-Reply-Path 
locked
检索数据方法很简单:  在Activity中
Java代码  
Uri uri = Uri.parse("content://sms/inbox");            
Cursor cur = this.managedQuery(uri, null, null, null, null);            
if (cur.moveToFirst()) {            
    do{        
    for(int j = 0; j < cur.getColumnCount(); j++){        
            info = "name:" + cur.getColumnName(j) + "=" + cur.getString(j);    
            Log.i("====>", info);    
        }    
    }while(cur.moveToNext());         
}  
Uri uri = Uri.parse("content://sms/inbox");         
Cursor cur = this.managedQuery(uri, null, null, null, null);         
if (cur.moveToFirst()) {         
    do{     
    for(int j = 0; j < cur.getColumnCount(); j++){     
            info = "name:" + cur.getColumnName(j) + "=" + cur.getString(j); 
            Log.i("====>", info); 
        } 
    }while(cur.moveToNext());      

managedQuery(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
参数依次为
uri                  上面已列出
查询字段         查询字段数组,也可以将所有需要查询的字段放入一个字符内    
                      比如new String[]{"_id", "thread_id"}和new String[]{"_id,thread_id"}是一致的。    
                      跟SQL一样,字段名不区分大小写    
条件                不带Where的SQL 条件字符比如"_id=? And thread_id = ? Or type =   '1'"    
条件中的参数   参数字符数组,跟上述的条件一一对应    
排序                不带Order by排序字符串,比如_id desc, type    
如果参数为null,SQL中查询字段为“*”,相关的条件为空白
记得要加上权限
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值