Is there a way to get all device contacts (aggregated, not raw) with contact ID, fist/last name, and contact picture?
Currently I am using the code below but it does not return structured name:
private static final String CONTACTS_SORT_ORDER = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
// all contacts
public final String[] columns = {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.PHOTO_THUMBNAIL_URI};
c = contentResolver.query(Contacts.CONTENT_URI, null, null, null, CONTACTS_SORT_ORDER);
Thanks
It is not possible to fetch the required data with one query. For each contact ID you'll have to query its Data directory:
ReplyDeleteUri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
Uri dataUri = Uri.withAppendedPath(contactUri, Contacts.Data.CONTENT_DIRECTORY);
Then you should run queries against this URI, filtering MIMETYPE by StructuredName.CONTENT_ITEM_TYPE to obtain StructuredName for the given ID.