自己研究:

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;
}

更多相关文章

  1. android获取联系人信息
  2. Android 获取Contacts 联系人 姓名 号码 照片信息
  3. android 调用系统通讯录添加联系人,并将号码传值到相应的控件内
  4. Android 向系统添加一个联系人信息contact
  5. Android 中ContentProvider的用法及用ContentProvider访问联系人
  6. Android中获取系统通讯录联系人并解决Android6.0权限问题
  7. android管理联系人操作
  8. android ip地址,手机号码,邮箱格式验证
  9. Android中联系人和通话记录详解(联系人的增删改查)(3)

随机推荐

  1. c语言怎么判断奇偶数
  2. c语言的基本单位是什么?
  3. c语言怎么将小写转换为大写
  4. c语言函数返回值类型由什么决定?
  5. c语言二进制怎么转换十进制
  6. c语言中不等于怎么表示?
  7. c语言中long是什么意思?
  8. c语言中=和==的区别是什么?
  9. c语言关键字是什么
  10. c语言源程序文件的后缀是什么?