【发布时间】:2016-06-19 09:27:00
【问题描述】:
我正在使用以下代码来获取本地电话联系人。它工作正常,并且可以非常快速地获取联系人。
但是问题来了,在我的联系人列表中,很少有联系人拥有多个电子邮件和多个电话号码。
如果有多个电话或电子邮件地址,它会多次重复同一个人的姓名。
如果我改变
ContactsContract.CommonDataKinds.Email.CONTENT_URI
到ContactsContract.CommonDataKinds.Phone.CONTENT_URI 然后它会根据联系人存在的电话号码重复姓名。请帮忙
private static final String[] PROJECTION = new String[]{
ContactsContract.CommonDataKinds.Email.CONTACT_ID,
ContactsContract.CommonDataKinds.Nickname.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Email.DATA,
ContactsContract.CommonDataKinds.Phone.NUMBER,
};
ContentResolver cr = mContext.getContentResolver();
Cursor cursor = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, PROJECTION, null, null, null);
if (cursor != null) {
try {
final int contactIdIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.CONTACT_ID);
final int displayNameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
final int emailIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA);
final int phoneIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
long contactId;
String displayName, email, phone, photo;
while (cursor.moveToNext()) {
mNK_UserModel = new NK_Contact();
contactId = cursor.getLong(contactIdIndex);
displayName = cursor.getString(displayNameIndex);
//Adding display name
mNK_UserModel.setFirstName(displayName);
Util.DEBUG_LOG(1, "contact", "contact id :" + contactId);
al_PhoneContacts.add(mNK_UserModel);
}
} finally {
cursor.close();
}
}
【问题讨论】:
标签: android android-contacts android-contentresolver