Change summary
src/main/java/eu/siacs/conversations/services/NotificationService.java | 39
1 file changed, 39 insertions(+)
Detailed changes
@@ -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<Message> messages) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
final Conversation conversation = (Conversation) messages.get(0).getConversation();