1、在AndroidManifest.xml 的manifest标签下添加操做短信的相关权限;html
2、从短信数据库读取全部短信;数据库
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); } }
3、获取短信的其余属性;code
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 */