How to get whatsapp Contacts from Android Programmatically? How to get whatsapp Contacts from Android Programmatically? android android

How to get whatsapp Contacts from Android Programmatically?


I have found Solution of my question so i put my answer here.. may it useful for others..

First Read and try to understand diagram of Android Contacts Data Store after that it's easy to understand whole contact flow. Three tier data model diagram is given below the snippets.

Code Snippets

//This class provides applications access to the content model.ContentResolver cr = context.getContentResolver();//RowContacts for filter Account TypesCursor contactCursor = cr.query(        ContactsContract.RawContacts.CONTENT_URI,        new String[]{ContactsContract.RawContacts._ID,                ContactsContract.RawContacts.CONTACT_ID},        ContactsContract.RawContacts.ACCOUNT_TYPE + "= ?",        new String[]{"com.whatsapp"},        null);//ArrayList for Store Whatsapp ContactArrayList<String> myWhatsappContacts = new ArrayList<>();if (contactCursor != null) {    if (contactCursor.getCount() > 0) {        if (contactCursor.moveToFirst()) {            do {                //whatsappContactId for get Number,Name,Id ect... from  ContactsContract.CommonDataKinds.Phone                String whatsappContactId = contactCursor.getString(contactCursor.getColumnIndex(ContactsContract.RawContacts.CONTACT_ID));                if (whatsappContactId != null) {                    //Get Data from ContactsContract.CommonDataKinds.Phone of Specific CONTACT_ID                    Cursor whatsAppContactCursor = cr.query(                            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,                            new String[]{ContactsContract.CommonDataKinds.Phone.CONTACT_ID,                                    ContactsContract.CommonDataKinds.Phone.NUMBER,                                    ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME},                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",                            new String[]{whatsappContactId}, null);                    if (whatsAppContactCursor != null) {                        whatsAppContactCursor.moveToFirst();                        String id = whatsAppContactCursor.getString(whatsAppContactCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));                        String name = whatsAppContactCursor.getString(whatsAppContactCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));                        String number = whatsAppContactCursor.getString(whatsAppContactCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));                        whatsAppContactCursor.close();                        //Add Number to ArrayList                        myWhatsappContacts.add(number);                        showLogI(TAG, " WhatsApp contact id  :  " + id);                        showLogI(TAG, " WhatsApp contact name :  " + name);                        showLogI(TAG, " WhatsApp contact number :  " + number);                    }                }            } while (contactCursor.moveToNext());            contactCursor.close();        }    }}showLogI(TAG, " WhatsApp contact size :  " + myWhatsappContacts.size());

here is the show Android Contact Data Store Diagramenter image description here