Android 短信的一些关键字
推荐安卓开发神器(里面有各种UI特效和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>