当前位置:操作系统 > 安卓/Android >>

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

       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中查询字段为“*”,相关的条件为空白   删除信息:

java代码:
this.getContentResolver().delete(Uri.parse("content://sms"), "_id=?", new String[]{"3"});

       Url中content://sms 替换成content://sms/ 也成功,但是其它url时程序报错,比如content://sms/inbox记得要加上权限

java代码:
<uses-permission android:name="android.permission.WRITE_SMS"></uses-permission>
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>

作者“xSTARx”
 

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,