Попытка репликации домашнего экрана Android.

Хорошо, я пытаюсь скопировать ярлыки, которые помещаются на домашний экран при создании ярлыка контакта, показанный пример:

У меня есть рабочий QuickContactBadge, который при нажатии показывает панель инструментов QuickContact. Однако у меня есть две проблемы, с которыми я сталкиваюсь.

Одним из них является картина. Я попытался использовать код из этого вопроса (я изменил его, добавив параметр для передачи идентификатора контакта). Затем я назначаю изображение моему QuickContactBadge следующим образом:

bdg.setImageURI(getPhotoUri(cid));

Он определенно получает фотографии, но получает совершенно неправильную картину. Как показано здесь:

Как видите, изображение, которое оно вернуло для Domino, явно НЕ является логотипом Domino.

Я получаю свой контактный идентификатор для передачи функции из этого кода:

    public static String[] ContactsProjection = new String[] {
            Contacts._ID,
            Contacts.LOOKUP_KEY, 
            Contacts.DISPLAY_NAME
    };

    public static Cursor getContacts() {
            ContentResolver cr = CoreLib.ContentResolver();
            Cursor contacts = cr.query(
                    ContactsContract.Data.CONTENT_URI, 
                    ContactsProjection, 
                    null, null, 
                    Contacts.TIMES_CONTACTED + " DESC"
            );
        return contacts;
    }

Что, я считаю, должно возвращать мне правильное удостоверение личности для каждой записи. Да?

Далее, как мне получить уменьшенное изображение или обрезать его, как показывает ярлык?

Я был немного разочарован, увидев, что QuickContactBadge на самом деле не копирует весь внешний вид ярлыка QuickContact, а просто действует как цель вызова для карточки QuickContact. Существует ли какой-либо встроенный способ, позволяющий легко воспроизвести ярлык контакта во всей его полноте, вызове, изображении, тексте и т. Д., Без необходимости воспроизводить все это с нуля?

1 ответ

Решение

Ах, ха! Разобрался, как получить правильное фото. Хотя это кажется нелогичным, при построении полевой проекции для запроса контактов поля Contacts._ID а также ContactsContract.Data.CONTACT_ID это не одно и то же.

ContactsContract.Data.CONTACT_ID правильный, чтобы пройти, чтобы получить фотографию. Используйте это, и все теперь золотое.

Другие вопросы по тегам