Get All Details from Contacts in ANDROID.

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.

22 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. 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
  3. 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
  4. 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
  5. 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

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>