自己研究:

package com.liyong.data; 


import java.util.Date; 


public class MyMessage { 


 private int messageNum; 

 private String message; 

 private String phonenumber; 

 private String name; 

 private String date; 

 private String type; 


 public String getType() { 

 return type; 

 } 


 public void setType(String type) { 

 this.type = type; 

 } 


 public String getDate() { 

 return date; 

 } 


 public void setDate(String date) { 

 this.date = date; 

 } 


 public String getName() { 

 return name; 

 } 


 public void setName(String name) { 

 this.name = name; 

 } 


 public int getMessageNum() { 

 return messageNum; 

 } 


 public void setMessageNum(int messageNum) { 

 this.messageNum = messageNum; 

 } 


 public String getMessage() { 

 return message; 

 } 


 public void setMessage(String message) { 

 this.message = message; 

 } 


 public String getPhonenumber() { 

 return phonenumber; 

 } 


 public void setPhonenumber(String phonenumber) { 

 this.phonenumber = phonenumber; 

 } 

 public MyMessage() { 


 } 

 public MyMessage(int messageNum, String message, String phonenumber) { 

 this.messageNum = messageNum; 

 this.message = message; 

 this.phonenumber = phonenumber; 

 } 

 public MyMessage(String date,String name, String message, String phonenumber,String type) { 

 this.type=type; 

 this.date = date; 

 this.name = name; 

 this.message = message; 

 this.phonenumber = phonenumber; 

 } 


} 


方法: 



 public static ArrayList<MyMessage> getSmsInfos(Context context) { 


 final String SMS_URI_INBOX = "content://sms/inbox";// 收信箱 

 ArrayList<MyMessage> mymessages=null; 

 try { 

 ContentResolver cr = context.getContentResolver(); 

 String[] projection = new String[] { "_id", "address", "person","body", "date", "type" }; 

 Uri uri = Uri.parse(SMS_URI_INBOX); 

 Cursor cursor = cr.query(uri, projection, null, null, "date desc"); 

 mymessages=new ArrayList<MyMessage>(); 

 MyMessage message=null; 

 while (cursor.moveToNext()) { 

 message = new MyMessage(); 

 // -----------------------信息---------------- 

 int nameColumn = cursor.getColumnIndex("person");// 联系人姓名列表序号 

 int phoneNumberColumn = cursor.getColumnIndex("address");// 手机号 

 int smsbodyColumn = cursor.getColumnIndex("body");// 短信内容 

 int dateColumn = cursor.getColumnIndex("date");// 日期 

 int typeColumn = cursor.getColumnIndex("type");// 收发类型 1表示接受 2表示发送 

 String nameId = cursor.getString(nameColumn); 

 String phoneNumber = cursor.getString(phoneNumberColumn); 

 String smsbody = cursor.getString(smsbodyColumn); 

 Date d = new Date(Long.parseLong(cursor.getString(dateColumn))); 

 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd " + "\n" + "hh:mm:ss"); 

 String date = dateFormat.format(d); 



 // --------------------------匹配联系人名字-------------------------- 


 Uri personUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI,phoneNumber); 

 Cursor localCursor = cr.query(personUri, new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup.PHOTO_ID,PhoneLookup._ID }, null, null, null); 


 System.out.println(localCursor.getCount()); 

 System.out.println("之前----"+localCursor); 

 if (localCursor.getCount()!=0) { 

 localCursor.moveToFirst(); 

 System.out.println("之后----"+localCursor); 

 String name = localCursor.getString(localCursor.getColumnIndex(PhoneLookup.DISPLAY_NAME)); 

 message.setName(name); 


 }else{ 

 message.setName(phoneNumber); 


 } 


 localCursor.close(); 

 message.setDate(date); 

 message.setMessage(smsbody); 

 message.setPhonenumber(phoneNumber); 

 mymessages.add(message); 

 } 


 } catch (SQLiteException e) { 

 e.printStackTrace(); 

 } 

 return mymessages; 

 }