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