我使用此代码获取手机上的联系人列表。
String[] PROJECTION = new String[] {
ContactsContract.RawContacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.PHOTO_THUMBNAIL_URI,
ContactsContract.CommonDataKinds.Email.DATA,
ContactsContract.CommonDataKinds.Photo.CONTACT_ID
};
String order = "CASE WHEN " + ContactsContract.Contacts.DISPLAY_NAME + " NOT LIKE '%@%' THEN 1 ELSE 2 END, "
+ ContactsContract.Contacts.DISPLAY_NAME + ", " + ContactsContract.CommonDataKinds.Email.DATA + " COLLATE NOCASE";
String filter = ContactsContract.CommonDataKinds.Email.DATA + " NOT LIKE ''";
Cursor cur = context.getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, PROJECTION, filter, null, order);
if (cur.moveToFirst())
do {
Contact contact = new Contact(
cur.getString(1), // Name
cur.getString(3), // Email
cur.getString(2)); // Photo
if(contacts.indexOf(contact) == -1 && !contact.email.equals(Svc_Profil.getString(ProfilValues.email)))
contacts.add(contact);
} while (cur.moveToNext());
cur.close();
这非常有效。问题是该列表包含用户的所有联系人,甚至包括"其他联系人"中的联系人。 (当您将邮件发送到未知的电子邮件地址时,Google会自动创建并完成此列表,即使您没有将此地址添加到您的联系人中)。
有人知道如何得不到这个"其他联系人"在结果?
提前谢谢。