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中

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

删除信息:

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

Url中content://sms 替换成content://sms/ 也成功,但是其它url时程序报错,比如content://sms/inbox

记得要加上权限

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

待续。。。

参考自http://www.cnblogs.com/GnagWang/archive/2011/01/06/1929075.html

更多相关文章

  1. Androidの联系人群组Group操作示例
  2. android 常用的数据库表以及操作说明
  3. Android(安卓)中数据库查询方法 query() 中的 selectionArgs 的
  4. android数据库编程----SqLiteOpenHelper的使用
  5. android通话记录的查询与删除
  6. android典型代码系列(二十二)------按键使上面的EditText抖动
  7. java/android查询手机固话归属地、GSM卡信息
  8. Android(安卓)删除 未接来电 通知
  9. android sqlite和listview 使用小例子

随机推荐

  1. 每天学习一个Android中的常用框架——0.
  2. Android ContextThemeWrapper cannot be
  3. Android 的ANR 问题解决
  4. Android之RxPermissions用kotlin写没反应
  5. ViewPager添加动画效果(一行代码)
  6. 给android添加系统属性
  7. Android传感器——方向传感器TYPE_ORIENT
  8. android中fragment的显示和隐藏
  9. Android ArcGis 地图图层切换
  10. android google map 实现拉框功能