Не удалось идентифицировать контакты WhatsApp

Я пытаюсь написать программу для Android, которая может определить, связан ли данный контактный номер с WhatsApp или нет. Мне удалось выяснить, имеет ли конкретное имя контакта учетную запись WhatsApp или нет. Как узнать, какой контакт, соответствующий этому имени контакта, имеет WhatsApp? В настоящее время я использую следующий код:

public void identifyWhatsappContact() { Cursor c = ctx.getContentResolver().query( RawContacts.CONTENT_URI, new String[] { RawContacts.CONTACT_ID, RawContacts.DISPLAY_NAME_PRIMARY }, RawContacts.ACCOUNT_TYPE + "= ? AND " + StructuredName.DISPLAY_NAME_PRIMARY + " = ?", new String[] { "com.whatsapp", "John Doe" }, null); ArrayList<String> myWhatsappContacts = new ArrayList<String>(); int contactNameColumn = c.getColumnIndex(RawContacts.DISPLAY_NAME_PRIMARY); while (c.moveToNext()) { myWhatsappContacts.add(c.getString(contactNameColumn)); Log.v("WHATSAPP", c.getString(contactNameColumn)+""); } } 

Я могу определить, имеет ли «John Doe» WhatsApp или нет, но я не могу понять, какой номер телефона «John Doe» имеет WhatsApp (при условии, что контакт имеет несколько телефонных номеров). Может ли кто-нибудь помочь мне? Я уже пробовал решение здесь , но это не работает для меня.

В этом примере извлекаются все номера WhatsApp имени контакта:

 public void getWhatsAppNumbers(String contactName) { Cursor cursor1 = getContentResolver().query( ContactsContract.RawContacts.CONTENT_URI, new String[]{ContactsContract.RawContacts._ID}, ContactsContract.RawContacts.ACCOUNT_TYPE + "= ? AND " + ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME_PRIMARY + " = ?", new String[]{"com.whatsapp", contactName}, null); while (cursor1.moveToNext()) { String rawContactId = cursor1.getString(cursor1.getColumnIndex(ContactsContract.RawContacts._ID)); Cursor cursor2 = getContentResolver().query( ContactsContract.Data.CONTENT_URI, new String[]{ContactsContract.Data.DATA3}, ContactsContract.Data.MIMETYPE + " = ? AND " + ContactsContract.Data.RAW_CONTACT_ID + " = ? ", new String[]{"vnd.android.cursor.item/vnd.com.whatsapp.profile", rawContactId}, null); while (cursor2.moveToNext()) { String phoneNumber = cursor2.getString(0); if (TextUtils.isEmpty(phoneNumber)) continue; if (phoneNumber.startsWith("Message ")) phoneNumber = phoneNumber.replace("Message ", ""); Log.d("whatsapp", String.format("%s - %s", contactName, phoneNumber)); } } } 
Intereting Posts
Видео, закодированное с использованием камеры2, перевернуто на устройствах nexus (5x, 6p) Остановите или освободите MediaPlayer, пока он все еще готовится Android Install apk с использованием командной строки busybox Как преобразовать часть исходного файла Java в Kotlin? Android RecyclerView создает и связывает все взгляды на изменение набора данных Как установить android: layout_columnWeight = "1" программно для элемента в поддержке android v7 Gridlayout Underflow в восстановлении в android 4.3 Пропустили 60 кадров! Приложение может слишком много работать над своей основной нитью Что происходит во время перемещения приложения на SD-карту в Android Не удалось найти класс android.support.v4.app.NotificationCompat $ Builder Вложенное scrollview + recyclerview, странное поведение autoscroll Общие предпочтения внутривещательной передачи FindFragmentById всегда возвращает null Android MapView ItemizedOverlay Draw onTap Хорошая практика создает анонимную AsyncTask для параллельного небольшого известного процесса замораживания?