2.x 的 Content provider 已经解成 ContactsContract.Contacts
所以, 要获取 contact2 数据库中的 contacts 直接使用
ContactsContract.Contacts.CONTENT_URI provider
如果查询其指定联系人ID 的所有电话号码的话,则要用
ContactsContract.CommonDataKinds.Phone.CONTENT_URI
查询指定联系人ID 的所有email 则使用
ContactsContract.CommonDataKinds.Email.CONTENT_URI
电话号码的字段序列
getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)
邮箱的字段序列
getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)
public List<ContactsPeople> getContactsEx() {
List<ContactsPeople> peoples = new ArrayList<ContactsPeople>();
Cursor cursor = context.getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
int idindex = cursor.getColumnIndex(ContactsContract.Contacts._ID);
int nameindex = cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
ContactsPeople people = null;
cursor.moveToFirst();
while (cursor.moveToNext()) {
// 得到联系人的ID号
int contactid = cursor.getInt(idindex);
// 得到联系人姓名
String contactName = cursor.getString(nameindex);
// 接下来查询号码
Cursor phoneNumberCursor = context.getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "="
+ contactid, null, null);
people = new ContactsPeople();
people.setContactid(contactid);
people.setName(contactName);
// 得到此系统人的所有电话号码
while (phoneNumberCursor.moveToNext()) {
String phonenumber = phoneNumberCursor
.getString(phoneNumberCursor
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
people.getPhones().add(phonenumber);
}
// 得到此系统的 email 地址
Cursor emailCursor = context.getContentResolver().query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + "="
+ contactid, null, null);
while (emailCursor.moveToNext()) {
String email = emailCursor
.getString(emailCursor
.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
people.getEmails().add(email);
}
peoples.add(people);
}
return peoples;
}
domain 类
public class ContactsPeople {
private int contactid;
private String name;
private List<String> phones= new ArrayList<String>();
private List<String> emails=new ArrayList<String>();
public int getContactid() {
return contactid;
}
public void setContactid(int contactid) {
this.contactid = contactid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getPhones() {
return phones;
}
public void setPhones(List<String> phones) {
this.phones = phones;
}
public List<String> getEmails() {
return emails;
}
public void setEmails(List<String> emails) {
this.emails = emails;
}