Я бы хотел, чтобы в мои уведомления входило изображение контакта.
Я использую NotificationCompat и MessagingStyle отображают сообщения чата для контактов.
Это работает при использовании .setIcon на человеке, но изображение квадратное, поэтому я хотел бы использовать setUri, но оно не отображает изображение, вместо этого я вижу первый инициал контакта по кругу.
Вот код, который я использую для уведомления.
Person person = new Person.Builder()
// .setIcon(contactIcon)
.setName(displayName)
.setUri(contentLookupURI)
.setKey(contactDetail)
.build();
NotificationCompat.MessagingStyle chatMessageStyle = new NotificationCompat.MessagingStyle(person);
NotificationCompat.MessagingStyle.Message notificationMessage = new
NotificationCompat.MessagingStyle.Message(
contentText,
System.currentTimeMillis(),
person
);
chatMessageStyle.addMessage(notificationMessage);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, NOTIFICATION_MESSAGES_CHANNEL_ID)
.setSmallIcon(icon) // notification icon
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setStyle(chatMessageStyle)
.setOnlyAlertOnce(true)
.setContentTitle(displayName);
А для контактного URI, используемого в .setUri
Я использую библиотеку для получения идентификатора контакта и ключа поиска, затем использую метод:
contactLookupURI =
ContactsContract.Contacts.getLookupUri(contactsList.get(0).getId(),
contactsList.get(0).getLookupKey());
Который производит это: content://com.android.contacts/contacts/lookup/3118r4-2F294339313F5B16.3789r5-2F294339313F5B16/6
, что мне кажется правильным.
Я не уверен, насколько новой является эта форма метода MessagingStyle, так как я не могу найти много примеров его использования с объектом Person.