利用内容提供者获取联系人信息

package com.home.contactsutils.uti;


import java.util.ArrayList;
import java.util.List;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.provider.ContactsContract;
import com.example.contactsutils.bean.ContactInfo;

/**

  * 获取联系人工具类

  * @author hq
  *
  */
public class ContactUtil {
/**
* 说明 这个方法是干嘛用的
* @param ctx 上下文
* @return 集合
*/
public static List<ContactInfo> getContacts(Context ctx) {
List<ContactInfo> list = new ArrayList<ContactInfo>();
ContentResolver contentResolver = ctx.getContentResolver();
Cursor cursor = contentResolver.query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

while (cursor.moveToNext()) {
ContactInfo info = new ContactInfo();
int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID);
int displayNameColumn = cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);

// 获得联系人的ID
String contactId = cursor.getString(idColumn);
// 获得联系人姓名
String displayName = cursor.getString(displayNameColumn);

String phoneNumber=null;
String emailAddress = null;


// 查看联系人有多少个号码,如果没有号码,返回0
int phoneCount = cursor
.getInt(cursor
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));


if (phoneCount > 0) {
// 获得联系人的电话号码列表
Cursor phoneCursor = contentResolver.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ "=" + contactId, null, null);
if (phoneCursor.moveToFirst()) {
   // 遍历所有的联系人下面所有的电话号码
 phoneNumber = phoneCursor
.getString(phoneCursor
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
phoneCursor.close();
}

//查询联系人所有邮箱地址

Cursor emailsCursor = contentResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,  ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ "=" + contactId, null, null);
if(emailsCursor.moveToFirst()){
emailAddress = emailsCursor
.getString(emailsCursor
.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
}
emailsCursor.close();


//System.out.println("ID:" + contactId);
//System.out.println("NAME:" + displayName);
//System.out.println("NUMBER:" + phoneNumber);
//System.out.println("EMAIL:" + emailAddress);
info.setId(contactId);
info.setName(displayName);
info.setPhone(phoneNumber);
info.setEmail(emailAddress);
list.add(info);
}
cursor.close();
return list;
}

}

业务bean


package com.example.contactsutils.bean;


public class ContactInfo {
/**
* 联系人姓名
*/
private String name;
/**
* 联系人id
*/
private String id;
/**
* 联系人电话
*/
private String phone;
/**
* 联系人邮箱
*/
private String email;


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


public String getId() {
return id;
}


public void setId(String id) {
this.id = id;
}


public String getPhone() {
return phone;
}


public void setPhone(String phone) {
this.phone = phone;
}


public String getEmail() {
return email;
}


public void setEmail(String email) {
this.email = email;
}


@Override
public String toString() {
return "ContactInfo [name=" + name + ", id=" + id + ", phone=" + phone
+ ", email=" + email + "]";
}
}




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值