Home » Android » android – Reading all contact data

android – Reading all contact data

Posted by: admin June 16, 2020 Leave a comment


I am on Android 2.3.3, API Level 10. I want to read all contacts and data associated to them, therefore e.g. all email addresses, phone numbers, custom fields…
I tried it like this:

Uri contactUri = ContactsContract.Contacts.CONTENT_URI;
Cursor contacts = managedQuery(contactUri, null, null, null, null );


do {
    for(int i=0;i<contacts.getColumnCount();i++)
         System.out.println(contacts.getColumnName(i) + ": " + contacts.getString(i));


} while (contacts.moveToNext());


However this gives me only the following fields:

times_contacted: 0
contact_status: null
custom_ringtone: null
has_phone_number: 1
phonetic_name: null
phonetic_name_style: 0
contact_status_label: null
lookup: [removed]
contact_status_icon: null
last_time_contacted: 0
display_name: [removed]
sort_key_alt: [removed]
in_visible_group: 1
_id: 101
starred: 0
sort_key: [removed]
display_name_alt: [removed]
contact_presence: null
display_name_source: 40
contact_status_res_package: null
contact_chat_capability: null
contact_status_ts: null
photo_id: null
send_to_voicemail: 0

Where are the phone numbers, email addresses…? Thanks for any hint!

How to&Answers:

See Contact Contract API examples


ContentResolver cr = getContentResolver();
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
            null, null, null, null);
    if (cur.getCount() > 0) {
    while (cur.moveToNext()) {
        String id = cur.getString(
    String name = cur.getString(
    if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
        //Query phone here.  Covered next

Take a look at this example