я пытаюсь получить фото профиля WhatsApp - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь получить фотографии профиля WhatsApp, и я получаю фотоUri для всех моих контактов, у которых есть WhatsApp.

но когда я пытаюсь представить фотографию, я получаю следующее исключение:

W/ImageView: Unable to open content: content://com.android.contacts/raw_contacts/12/display_photo
java.io.FileNotFoundException: No photo file found for ID 0

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

вот код, который я использую для получения URI фотографии:

public Uri getPhotoUri(long contactId) {

Uri photoUri=null;

ContentResolver contentResolver = getContext().getContentResolver();
Cursor photoCur = contentResolver.query(
        ContactsContract.RawContacts.CONTENT_URI,null,
        ContactsContract.RawContacts.CONTACT_ID + "=" + contactId + " AND " +
                ContactsContract.RawContacts.ACCOUNT_TYPE + "= ?",
        new String[]{"com.whatsapp"}, ContactsContract.RawContacts.CONTACT_ID);

if (photoCur != null && photoCur.moveToFirst()) {
    Uri photoId = ContentUris.withAppendedId(ContactsContract.RawContacts.CONTENT_URI, contactId);
    photoUri = Uri.withAppendedPath(photoId, ContactsContract.RawContacts.DisplayPhoto.CONTENT_DIRECTORY);
}

return photoUri;
}

вот код, которыйя использую, чтобы проверить, существует ли файл:

    if (customer.getContactPhotoUri() != null) {

    String fullPath = customer.getContactPhotoUri().toString();
    File path = new File(fullPath);
    if (path.exists()) {
        Log.i("ZCF", "File Exists: " + fullPath);
        imageView.setImageURI(customer.getContactPhotoUri());
    } else {
        Log.i("ZCF", "File does not Exists: " + fullPath);
        imageView.setImageDrawable(context.getDrawable(R.drawable.ic_person_blue_24dp));
    }
} else {
    imageView.setImageDrawable(context.getDrawable(R.drawable.ic_person_blue_24dp));
}

результат этого кода:

I / ZCF: Файл существует: content: // com.android.contacts / raw_contacts / 12 / display_photo

1 Ответ

0 голосов
/ 10 февраля 2019

Whatsapp не сохраняет свои фотографии контактов с помощью ContactsContract, поэтому вы не можете получить к ним доступ.

Фотографии хранятся в папке Whatsapp на внутренней памяти, их можно просматривать вручнуюс помощью приложения для просмотра файлов, но эти папки недоступны для приложений, поэтому вы не можете получить к ним программный доступ.

Это явно преднамеренно, поскольку Whatsapp не хочет, чтобы их фотографии просачивались за пределыих приложение.

...