android 中管理短信

为了看代码方便,一边在网上google资料,一边看Android java 源代码。

偶然发现了一个类MmsSmsDatabaseHelper.java,原来android将所有的短信信息都存入了mmssms.db中。

公开的SDK中没有这个类,不能直接使用。于是自己写了一个SQLiteOpenHelper,但是查询的时候发生SQL异常。

看来不能为所欲为了,不过据网上资料介绍可以拷贝db文件来实现短信数据备份。

既然每个db跟package名相关,建立了一个package为com.android.providers.telephony的工程去试一试,看看能不能成功。

结果输出Please execute 'adb uninstall com.android.providers.telephony' in a shell,android的安全做得很强大啊。

 


 

 

不能直接访问数据库,只能通过协议来访问数据库了,       
先贴出相关的协议:       
content://sms/inbox        收件箱
content://sms/sent        已发送
content://sms/draft        草稿
content://sms/outbox        发件箱
content://sms/failed        发送失败
content://sms/queued        待发送列表

 

在模拟器上Outbox没有查询到数据,在模拟器上找了老半天也没找到发件箱,很郁闷。   
数据库中sms相关的字段如下:   
_id               一个自增字段,从1开始
thread_id    序号,同一发信人的id相同
address      发件人手机号码
person        联系人列表里的序号,陌生人为null
date            发件日期
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    

 

检索数据方法很简单:  

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())

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值