我希望我的通知包含联系人的图像。 我正在使用NotificationCompat和MessagingStyle来显示联系人的聊天消息。
在人身上使用.setIcon时此方法有效,但是图像是方形的,因此我想使用setUri,但它不显示图像,而是在圆圈中看到联系人的第一个首字母。
这是我用于通知的代码。
if (optind < argc) {
filename = argv[optind];
} else {
fprintf(stderr, "Usage: %s -a|-b|-c filename\n", argv[0]);
exit(2);
}
对于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,我正在使用一个库来获取联系人ID和lookupkey,然后使用以下方法:
.setUri
哪个生成了: contactLookupURI =
ContactsContract.Contacts.getLookupUri(contactsList.get(0).getId(),
contactsList.get(0).getLookupKey());
,对我来说是正确的。
我不确定MessagingStyle方法的这种形式有多新,因为我找不到与Person对象一起使用的许多示例。