Tuesday, January 17, 2012

Android Contacts: how to get contact list with first name, last name and a picture


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

1 comment:

  1. It is not possible to fetch the required data with one query. For each contact ID you'll have to query its Data directory:

    Uri 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.

    ReplyDelete