您的位置:首页 > 移动开发 > Android开发

获取手机通话记录或短信记录中的联系人信息

2016-07-02 22:14 465 查看
1、手机联系人的信息domain类:

/**
* @author Administrator
* 手机联系人的信息封装
*/
public class ContantBean {
private String phone;
private String name;
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

2、读取手机通话记录或短信记录中的联系人的实现类:

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.database.Cursor;
import android.net.Uri;

/**
* @author Administrator
* 读取手机联系人的功能类
*/
public class ReadContantsEngine {
/**
* @return
*     短信日志的记录
*/
public static List<ContantBean> readSmslog(Context context){
//1,短信日志的数据库
//2,通过分析,db不能直接访问,需要内容提供者访问该数据库
//3,看上层源码 找到uri content://sms
Uri uri = Uri.parse("content://sms");
//获取短信记录的联系人游标
Cursor cursor = context.getContentResolver().query(uri, new String[]{"address"}, null, null, " _id desc");
List<ContantBean> datas = new ArrayList<ContantBean>();
while (cursor.moveToNext()) {
ContantBean bean = new ContantBean();
String phone = cursor.getString(0);//获取短信接收人的号码
//String name = cursor.getString(1);//获取名字
//bean.setName(name);
bean.setPhone(phone);
//添加数据
datas.add(bean);
}
return datas;
}
/**
* @return
*     电话日志的记录
*/
public static List<ContantBean> readCalllog(Context context){
//1,电话日志的数据库
//2,通过分析,db不能直接访问,需要内容提供者访问该数据库
//3,看上层源码 找到uri content://calls
Uri uri = Uri.parse("content://call_log/calls");
//获取电话记录的联系人游标
Cursor cursor = context.getContentResolver().query(uri, new String[]{"number","name"}, null, null, " _id desc");
List<ContantBean> datas = new ArrayList<ContantBean>();

while (cursor.moveToNext()) {
ContantBean bean = new ContantBean();
String phone = cursor.getString(0);//获取号码
String name = cursor.getString(1);//获取名字
bean.setName(name);
bean.setPhone(phone);
//添加数据
datas.add(bean);
}
return datas;
}
}
保存通话记录数据的数据库在data/data/com.android.providers.contacts/databases/contacts2.db中,提取用SQLiteExpertPers.exe打开后,表结构如图: 



保存短信记录数据的数据库在data/data/com.android.providers.telephony/databases/mmssms.db中,提取用SQLiteExpertPers.exe打开后,表结构如图:
   (注明:其中address指的是短信接收人的联系号码)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息