Как получить контакты WhatsApp с Android?

Я пытаюсь получить контакт whatsapp с телефона, и я получаю общее количество контактов whatsapp, но от RawContacts как получить whatsapp. Число и имя, которые я не знаю. я попытался найти решение, но не могу получить точное решение для этого. Пожалуйста, помогите мне.

Я поставил свой код ниже.

 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()); 

Я нашел решение своего вопроса, поэтому я поставил свой ответ здесь. Может ли он полезен для других.

Сначала прочитайте и попытайтесь понять схему Android Data Data Store, после чего легко понять весь stream контактов. Ниже приведены fragmentы кода модели с тремя уровнями.

Фрагменты кода

 //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()); 

здесь представлена ​​диаграмма хранилища данных Android Android введите описание изображения здесь

Давайте будем гением компьютера.