Использование фотографии выбора контактов по умолчанию в моем приложении - PullRequest
0 голосов
/ 06 июня 2011

В моем приложении у меня есть ListView контактов с основной информацией (имя, номер телефона), а также изображение контакта, очень похожее на сборщик контактов Android по умолчанию.Если у контакта нет изображения, он отображает значок приложения на своем месте.Однако я хотел бы использовать изображение силуэта по умолчанию, которое вместо этого использует средство выбора контактов.У меня вопрос, как я могу получить доступ к этому изображению и использовать его в моем приложении?Вот раздел моего кода, который загружает изображение контакта:

Contact c = new Contact();

    final String[] projection = new String[] {
        Contacts.DISPLAY_NAME, // the name of the contact
        Contacts.PHOTO_ID // the ID of the column in the data table for the image
    };


    final Cursor contact = getContentResolver().query(
        Contacts.CONTENT_URI,
        projection,
        Contacts._ID + "=?", // filter entries on the basis of the contact id
        new String[] {String.valueOf(contactId)}, // the parameter which the contact id column is compared to
        null
    );

    if(contact.moveToFirst()) {
        final String name = contact.getString(
                contact.getColumnIndex(Contacts.DISPLAY_NAME));
        final String photoId = contact.getString(
                contact.getColumnIndex(Contacts.PHOTO_ID));

        // Get photo data for this contact
        if(photoId != null) {
            final Cursor photo = managedQuery(
                Data.CONTENT_URI,
                new String[] {Photo.PHOTO}, // column for the photo blob
                Data._ID + "=?", // select row by id
                new String[] {photoId}, // filter by photoId
                null
            );

            // Convert photo blob to a bitmap
            if(photo.moveToFirst()) {
                byte[] photoBlob = photo.getBlob(
                        photo.getColumnIndex(Photo.PHOTO));
                final Bitmap photoBitmap = 
                    BitmapFactory.decodeByteArray(photoBlob, 0, photoBlob.length);

                c.setPhoto(photoBitmap);
            }


        }



        c.setName(name);

Вот код в моем классе ContactAdapter, который связывает ImageView с фотографией контактов:

ImageView photo = (ImageView) v.findViewById(R.id.contact_photo);

if(photo != null) {
            if(c.hasPhoto()) photo.setImageBitmap(c.getPhoto());
            else photo.setImageResource(R.drawable.app_icon);
        }

1 Ответ

3 голосов
/ 06 июня 2011

На самом деле в Android используются 3 разных изображения. Вы можете найти их в папке drawable ресурсов, которые поставляются с эмулятором, или вы можете скачать их здесь:

enter image description here enter image description here enter image description here

...