Я хочу получить profilepicture whatsApp, но только получить имя и контактную информацию?

Я хочу получить изображение и номер профиля WhatsApp, но используя contentResolver, я получу только имя и номер, используя следующий код фрагмента.

private void showContactWhatsApp(){ ContentResolver cr = getContentResolver(); 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<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); Log.e(TAG, " WhatsApp contact id : " + id); Log.e(TAG, " WhatsApp contact name : " + name); Log.e(TAG, " WhatsApp contact number : " + number); } } } while (contactCursor.moveToNext()); contactCursor.close(); } } } Log.e(TAG, " WhatsApp contact size : " + myWhatsappContacts.size()); } 

Я хочу получить изображение профиля WhatsApp, например, приложение SyncMe.

Я жду, чтобы получить список контактов WhatsApp с именем, номером и эскизом.

Во-первых, я просто хочу повторить разницу между RawContact и Contact . Последний является агрегированием (представляющим человека) первого (представляющим учетную запись).

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

 Uri photoUri; Cursor photoCur = cr.query( ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.CONTACT_ID + "=" + aggregateContactId + " AND " + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'", null, null ); if (photoCur != null && photoCur.moveToFirst()) { Uri photoId = ContentUris.withAppendedId(Contacts.CONTENT_URI, aggregateContactId); photoUri = Uri.withAppendedPath(person, Contacts.Photo.CONTENT_DIRECTORY); } 

Если у вас есть специально для фото WhatsApp, сначала убедитесь, что фотография кэшируется на устройстве (просто чтобы избежать ложных флагов во время тестирования), откройте полное изображение контактов в WhatsApp, и вы можете быть уверены, что оно кэшировано), тогда вам придется Выполните отдельный поиск изображения (от API 14):

 Uri photoId = ContentUris.withAppendedId(RawContacts.CONTENT_URI, whatsappContactId); Uri photoUri = Uri.withAppendedPath(photoId, RawContacts.DisplayPhoto.CONTENT_DIRECTORY);