Get All Details from Contacts in ANDROID.

By | June 13, 2011

Hi all..

In today’s post I will show you how to get all information from the ANDROID Contacts programatically.
Just copy and paste this code to your mail java file and check the Logcat for output.

package pack.coderzheaven;

import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;

public class GetContactsDemo extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        readContacts();
    }

    public void readContacts(){
    	 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(cur.getColumnIndex(ContactsContract.Contacts._ID));
		        String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
		        if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
		        	System.out.println("name : " + name + ", ID : " + id);

		        	// get the phone number
		        	Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
		         		    			   ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
		         		    			   new String[]{id}, null);
         	        while (pCur.moveToNext()) {
         	        	  String phone = pCur.getString(
         	        			 pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
         	        	  System.out.println("phone" + phone);
         	        }
         	        pCur.close();


         	        // get email and type

         	       Cursor emailCur = cr.query(
         	    			ContactsContract.CommonDataKinds.Email.CONTENT_URI,
         	    			null,
         	    			ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
         	    			new String[]{id}, null);
     	    		while (emailCur.moveToNext()) {
     	    		    // This would allow you get several email addresses
     	    	            // if the email addresses were stored in an array
     	    		    String email = emailCur.getString(
     	    	                      emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
     	    	 	    String emailType = emailCur.getString(
     	    	                      emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));

     	    		  System.out.println("Email " + email + " Email Type : " + emailType);
         	    	}
         	    	emailCur.close();

         	    	// Get note.......
         	    	String noteWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
         	        String[] noteWhereParams = new String[]{id,
         	 		ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE};
         	                Cursor noteCur = cr.query(ContactsContract.Data.CONTENT_URI, null, noteWhere, noteWhereParams, null);
	         	 	if (noteCur.moveToFirst()) {
	         	 	    String note = noteCur.getString(noteCur.getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE));
	         	 	  System.out.println("Note " + note);
	         	 	}
	         	 	noteCur.close();

	         	 	//Get Postal Address....

	         	 	String addrWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
	         		String[] addrWhereParams = new String[]{id,
	         			ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE};
	         		Cursor addrCur = cr.query(ContactsContract.Data.CONTENT_URI,
	         	                null, null, null, null);
	         		while(addrCur.moveToNext()) {
	         			String poBox = addrCur.getString(
	         	                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX));
	         	 		String street = addrCur.getString(
	         	                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));
	         	 		String city = addrCur.getString(
	         	                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));
	         	 		String state = addrCur.getString(
	         	                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));
	         	 		String postalCode = addrCur.getString(
	         	                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));
	         	 		String country = addrCur.getString(
	         	                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY));
	         	 		String type = addrCur.getString(
	         	                     addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE));

	         	 		// Do something with these....

	         	 	}
	         	 	addrCur.close();

	         	 	// Get Instant Messenger.........
	         	 	String imWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
	         	 	String[] imWhereParams = new String[]{id,
	         	 	    ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE};
	         	 	Cursor imCur = cr.query(ContactsContract.Data.CONTENT_URI,
	         	            null, imWhere, imWhereParams, null);
	         	 	if (imCur.moveToFirst()) {
	         	 	    String imName = imCur.getString(
	         	                 imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA));
	         	 	    String imType;
	         	 	    imType = imCur.getString(
	         	                 imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.TYPE));
	         	 	}
	         	 	imCur.close();

	         	 	// Get Organizations.........

	         	 	String orgWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
	         	 	String[] orgWhereParams = new String[]{id,
	         	 		ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE};
	         	 	Cursor orgCur = cr.query(ContactsContract.Data.CONTENT_URI,
	         	                null, orgWhere, orgWhereParams, null);
	         	 	if (orgCur.moveToFirst()) {
	         	 		String orgName = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA));
	         	 		String title = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE));
	         	 	}
	         	 	orgCur.close();
	 	        }
	        }
 	   }
    }

}

Note : Make sure you add this permission to the AndroidManifest File.

Download the complete android java source code from the link below.

coderzheaven.com/uploads/GetContactsTwo.rar

Posts to come ……..

How to add and delete contacts programatically. keep visiting coderzheaven….

Some of the posts you want to see are located here
Please leave your valuable comments on this post.

32 thoughts on “Get All Details from Contacts in ANDROID.

  1. Anonymous

    The ONLY resource that worked. I’ve been Googling this problem for days. Most useful and accurate “tutorial”, if you will.

    Thank you.

    Reply
  2. Prince_Alvin

    thanks a lot man works like a charm….
    and easy to understand the coding……
    🙂

    Reply
  3. TechnoTalkative

    Facing difficulty while i was copying this code for testing. Can you please post the downloadable example.

    Reply
  4. dheeraj

    hi,I am using your code to get contacts of android.i am taking the contact no.and name but it works very slow on real device.the screen turns black and then shows the contact after a while.
    what is the problem.please help me

    Reply
  5. dleviathan

    But with this code u program run very slowly i had run 1 contacts with 348 contact not full details, this code take > 1m. How to improve effective? I need idea! thanks.

    Reply
    1. James Post author

      Hi Lance :-
      Check this line
      String phone = pCur.getString( pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
      System.out.println(“phone” + phone); // printing the phone number-> check Logcat

      Reply
  6. Benild

    great tutorial…..
    I am getting all contact from the phone, after that i display only number to textview, first time i pick the contact and can display to the textview.then getting another contact, but it cannot be change the previous selected one. always show the first selected contact.
    Plz help me, Thanks in advance……….

    Reply
    1. James Post author

      You could just create an adapter for the listview with the widgets you want and assign values using the adapter.

      Reply
  7. praveen

    hi myself praveen

    i lost my mobile last week i need the all contacts # when i was using WIFI the contacts will synchronization to mail. There is any way is there to get my contacts through mail id

    Please contact to mail : Praveensbi4@gmail.com

    contact : 9916594114

    Regards
    Praveen.G

    Reply
  8. Govind

    Thanks Man, For great tutorial. Could you guide me to Get and Add Relationship From and to contacts ?

    Thanks again.

    Reply
  9. habib

    hi.
    my language is not English.
    I want to learn android program.
    I need cods that send contacts to email.
    can you help me?
    thank you.

    Reply
  10. SWAPNIL CHAUHAN

    Hi James
    I am not able to get the list. The app is running smooth but not displaying any contacts.
    What to do?
    Thanks

    Reply
  11. Pingback: Come caricare tutti i contatti con il tempo minimo in Android IL ANDORID

  12. Pingback: Como cairregair todos os contatos com tempo mínimo no Android Android Cake

  13. Dena

    Hmm it seems like your blog ate my first comment
    (it was super long) so I guess I’ll just sum it up what I
    had written and say, I’m thoroughly enjoying your blog.
    I too am an aspiring blog writer but I’m still new to everything.

    Do you have any points for newbie blog writers? I’d definitely appreciate it.

    Reply
  14. himanshu

    hello i really liked your tutorial, you almost provide everything from contact but i need one more thing i.e event like birth day and website.
    Thanks in advance. liked

    Reply
  15. Pingback: android - Cómo cargar todos los contactos con el mínimo de tiempo en Android

  16. Pingback: How load all the contacts with minimum time in Android

  17. Pingback: Getting null value while retrieving the CONTACT NAME from CONTACT EMAIL

Leave a Reply

Your email address will not be published. Required fields are marked *