一、在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
*/