diff --git a/src/main/java/eu/siacs/conversations/services/NotificationService.java b/src/main/java/eu/siacs/conversations/services/NotificationService.java index 7c16487f1a436ee49251f5936fc2b9e3fae29488..95ab3b64b61ac8e4cb7e28dc43a08056d771e744 100644 --- a/src/main/java/eu/siacs/conversations/services/NotificationService.java +++ b/src/main/java/eu/siacs/conversations/services/NotificationService.java @@ -635,6 +635,15 @@ public class NotificationService { mXmppConnectionService.getString(R.string.rtp_state_incoming_call)); } final Contact contact = id.getContact(); + builder.addPerson(getPerson(contact)); + ShortcutInfoCompat info = mXmppConnectionService.getShortcutService().getShortcutInfoCompat(contact); + builder.setShortcutInfo(info); + if (Build.VERSION.SDK_INT >= 30) { + mXmppConnectionService.getSystemService(ShortcutManager.class).pushDynamicShortcut(info.toShortcutInfo()); + } + if (mXmppConnectionService.getAccounts().size() > 1) { + builder.setSubText(contact.getAccount().getJid().asBareJid().toString()); + } builder.setLargeIcon( mXmppConnectionService .getAvatarService() @@ -1110,6 +1119,9 @@ public class NotificationService { info.getNumberOfCalls(), info.getNumberOfCalls()); builder.setContentTitle(title); + if (mXmppConnectionService.getAccounts().size() > 1) { + builder.setSubText(conversation.getAccount().getJid().asBareJid().toString()); + } final String name = conversation.getContact().getDisplayName(); if (publicVersion) { builder.setTicker(title); @@ -1436,6 +1448,33 @@ public class NotificationService { return builder.build(); } + private Person getPerson(Contact contact) { + final Person.Builder builder = new Person.Builder(); + builder.setName(contact.getDisplayName()); + final Uri uri = contact.getSystemAccount(); + if (uri != null) { + builder.setUri(uri.toString()); + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + final Jid jid = contact.getJid(); + builder.setKey(jid.toString()); + final Conversation c = mXmppConnectionService.find(contact.getAccount(), jid); + if (c != null) { + builder.setImportant(c.getBooleanAttribute(Conversation.ATTRIBUTE_PINNED_ON_TOP, false)); + } + builder.setIcon( + IconCompat.createWithBitmap( + mXmppConnectionService + .getAvatarService() + .get( + contact, + AvatarService.getSystemUiAvatarSize( + mXmppConnectionService), + false))); + } + return builder.build(); + } + private void modifyForTextOnly(final Builder builder, final ArrayList messages) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { final Conversation conversation = (Conversation) messages.get(0).getConversation();