android(2.0以后版本) 中读取联系人和通话记录

本文介绍如何使用Android系统API来获取手机中的联系人信息、电话号码、地址及电子邮件等详细步骤,并展示了如何遍历通话记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[url]http://blog.163.com/szs121@126/blog/static/109056781201079113213628/[/url]
[url]http://wang-peng1.iteye.com/blog/564284[/url]
android 中获取联系人

ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while(cursor.moveToNext()){
//get name
int nameFiledColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String contact = cursor.getString(nameFiledColumnIndex);

String[] PHONES_PROJECTION = new String[] { "_id","display_name","data1","data3"};//
String contactId = cursor.getString(cursor.getColumnIndex(PhoneLookup._ID));
Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, PHONES_PROJECTION,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId, null, null);
//name type ..
while(phone.moveToNext()) {
int i = phone.getInt(0);
String str = phone.getString(1);
str = phone.getString(2);
str = phone.getString(3);
}
phone.close();
//addr
Cursor addrCur = cr.query(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI ,
new String[]{"_id","data1","data2","data3"}, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId , null, null);
while(addrCur.moveToNext()) {
int i = addrCur.getInt(0);
String str = addrCur.getString(1);
str = addrCur.getString(2);
str = addrCur.getString(3);
}
addrCur.close();

//email
Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI ,
new String[]{"_id","data1","data2","data3"}, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId , null, null);
while(emailCur.moveToNext()) {
int i = emailCur.getInt(0);
String str = emailCur.getString(1);
str = emailCur.getString(2);
str = emailCur.getString(3);
}
emailCur.close();

}
cursor.close();


android中获取通话记录
String str = "";
int type;
long callTime;
Date date;
String time= "";
ContentResolver cr = getContentResolver();
final Cursor cursor = cr.query(CallLog.Calls.CONTENT_URI, new String[]{CallLog.Calls.NUMBER,CallLog.Calls.CACHED_NAME,CallLog.Calls.TYPE, CallLog.Calls.DATE}, null, null,CallLog.Calls.DEFAULT_SORT_ORDER);
for (int i = 0; i < cursor.getCount(); i++) {
cursor.moveToPosition(i);
str = cursor.getString(0);
str = cursor.getString(1);
type = cursor.getInt(2);
SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
date = new Date(Long.parseLong(cursor.getString(3)));
time = sfd.format(date);
}



读取联系人的名字很简单,但是在读取电话号码时,就需要先去的联系人的ID,然后在通过ID去查找电话号码!一个联系人可能存在多个电话号码!

//得到ContentResolver对象   
ContentResolver cr = getContentResolver();
//取得电话本中开始一项的光标
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext())
{
// 取得联系人名字
int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String name = cursor.getString(nameFieldColumnIndex);
string += (name);
// 取得联系人ID
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "
+ contactId, null, null);

// 取得电话号码(可能存在多个号码)
while (phone.moveToNext())
{
String strPhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
string += (":" + strPhoneNumber);
}
string += "\n";
phone.close();
}
cursor.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值