回复
黑皇帝安全网
管理员
管理员
  • 金钱95848枚
  • 威望90274点
  • 贡献值89936点
  • 注册日期2009-09-12
  • 最后登录2019-01-02
  • 荣誉会员
  • VIP会员
  • 社区版主
阅读:1291723回复:821

Android监控查询手机所有短信内容

楼主#
更多 发布于:2009-09-20 12:00

 

一、在AndroidManifest.xml 的manifest标签下添加操作短信的相关权限;

 

 

二、从短信数据库读取所有短信;

private Uri SMS_INBOX = Uri.parse("content://sms/");

private void obtainPhoneMessage() {
ContentResolver cr = getContentResolver();
String[] projection = new String[]{"_id", "address", "person", "body", "date", "type"};
Cursor cur = cr.query(SMS_INBOX, projection, null, null, "date desc");
if (null == cur) {
Log.i("ooc", "************cur == null");
return;
}
while (cur.moveToNext()) {
String number = cur.getString(cur.getColumnIndex("address"));//手机号
String name = cur.getString(cur.getColumnIndex("person"));//联系人姓名列表
String body = cur.getString(cur.getColumnIndex("body"));//短信内容
//至此就获得了短信的相关的内容, 以下是把短信加入map中,构建listview,非必要。
Map<String, Object> map = new HashMap<String, Object>();
map.put("num", number);
map.put("mess", body);
list.add(map);
}
}

 

三、获取短信的其他属性;

 

String number = cur.getString(cur.getColumnIndex("想获得的属性")); //获取方法
/**
* sms主要结构:
* _id:短信序号,如100
* thread_id:对话的序号,如100,与同一个手机号互发的短信,其序号是相同的
* address:发件人地址,即手机号,如+8613811810000
* person:发件人,如果发件人在通讯录中则为具体姓名,陌生人为null
* date:日期,long型,如1256539465022,可以对日期显示格式进行设置
* protocol:协议0SMS_RPOTO短信,1MMS_PROTO彩信
* read:是否阅读0未读,1已读
* status:短信状态-1接收,0complete,64pending,128failed
* type:短信类型1是接收到的,2是已发出
* body:短信具体内容
* service_center:短信服务中心号码编号,如+8613800755500
*/