¿Cómo obtener los contactos de WhatsApp de Android?

Intenté obtener el contacto de whatsapp desde el teléfono y obtengo el recuento total del contacto de whatsapp, pero de RawContacts cómo obtener el número y el nombre de RawContacts que no sé. He tratado de encontrar una solución, pero no puedo obtener la solución exacta para eso. Por favor, ayúdame.

Puse mi código a continuación.

 ContentResolver cr = context.getContentResolver(); Cursor c = cr.query( ContactsContract.RawContacts.CONTENT_URI, new String[] { ContactsContract.RawContacts.CONTACT_ID, ContactsContract.RawContacts.DISPLAY_NAME_PRIMARY }, ContactsContract.RawContacts.ACCOUNT_TYPE + "= ?", new String[] { "com.whatsapp" }, null); ArrayList myWhatsappContacts = new ArrayList(); String projection[] = { ContactsContract.CommonDataKinds.Phone.NUMBER }; if(c != null) { if (c.getCount() > 0) { while (c.moveToNext()) { String whatsappContactId = c.getString(c.getColumnIndex(ContactsContract.RawContacts.Data._ID)); Cursor dataCursor = cr.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{whatsappContactId}, null); // You can also read RawContacts.CONTACT_ID to read the // ContactsContract.Contacts table or any of the other related ones. String number = dataCursor.getString(dataCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER)); myWhatsappContacts.add(number); } } } showLogI(TAG, " WhatsApp contact size : " + myWhatsappContacts.size()); 

He encontrado la Solución de mi pregunta, así que pongo mi respuesta aquí … puede ser útil para otros …

Primero, lea y trate de comprender el diagtwig del almacén de datos de contactos de Android, luego de lo cual es fácil comprender todo el flujo de contactos. El diagtwig del modelo de datos de tres niveles se da debajo de los fragmentos.

Fragmentos de código

 //This class provides applications access to the content model. ContentResolver cr = context.getContentResolver(); //RowContacts for filter Account Types Cursor 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 Contact ArrayList 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()); 

aquí está el show Android Contact Data Store Diagram enter image description here