From f15a0b055045d7fa3dc824be729981e05d776716 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Mon, 17 Jun 2019 21:27:36 +0200 Subject: MessageStyle notifications replace car extender --- .../messenger/services/NotificationService.java | 34 +++++++++------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/src/main/java/de/pixart/messenger/services/NotificationService.java b/src/main/java/de/pixart/messenger/services/NotificationService.java index 27a33382d..939c95299 100644 --- a/src/main/java/de/pixart/messenger/services/NotificationService.java +++ b/src/main/java/de/pixart/messenger/services/NotificationService.java @@ -527,7 +527,6 @@ public class NotificationService { final Builder mBuilder = new NotificationCompat.Builder(mXmppConnectionService, quietHours ? "quiet_hours" : (notify ? "messages" : "silent_messages")); if (messages.size() >= 1) { final Conversation conversation = (Conversation) messages.get(0).getConversation(); - final UnreadConversation.Builder mUnreadBuilder = new UnreadConversation.Builder(conversation.getName().toString()); mBuilder.setLargeIcon(mXmppConnectionService.getAvatarService().get(conversation, AvatarService.getSystemUiAvatarSize(mXmppConnectionService))); mBuilder.setContentTitle(conversation.getName()); if (Config.HIDE_MESSAGE_TEXT_IN_NOTIFICATION) { @@ -537,28 +536,31 @@ public class NotificationService { Message message; //TODO starting with Android 9 we might want to put images in MessageStyle if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P && (message = getImage(messages)) != null) { - modifyForImage(mBuilder, mUnreadBuilder, message, messages); + modifyForImage(mBuilder, message, messages); } else { - modifyForTextOnly(mBuilder, mUnreadBuilder, messages); + modifyForTextOnly(mBuilder, messages); } RemoteInput remoteInput = new RemoteInput.Builder("text_reply").setLabel(UIHelper.getMessageHint(mXmppConnectionService, conversation)).build(); PendingIntent markAsReadPendingIntent = createReadPendingIntent(conversation); NotificationCompat.Action markReadAction = new NotificationCompat.Action.Builder( R.drawable.ic_email_open_outline_white_24dp, mXmppConnectionService.getString(R.string.mark_as_read), - markAsReadPendingIntent).build(); + markAsReadPendingIntent) + .setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_READ) + .setShowsUserInterface(false) + .build(); String replyLabel = mXmppConnectionService.getString(R.string.reply); NotificationCompat.Action replyAction = new NotificationCompat.Action.Builder( R.drawable.ic_reply_white_24dp, replyLabel, - createReplyIntent(conversation, false)).addRemoteInput(remoteInput).build(); + createReplyIntent(conversation, false)) + .setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_REPLY) + .setShowsUserInterface(false) + .addRemoteInput(remoteInput).build(); NotificationCompat.Action wearReplyAction = new NotificationCompat.Action.Builder(R.drawable.ic_wear_reply, replyLabel, createReplyIntent(conversation, true)).addRemoteInput(remoteInput).build(); mBuilder.extend(new NotificationCompat.WearableExtender().addAction(wearReplyAction)); - mUnreadBuilder.setReplyAction(createReplyIntent(conversation, true), remoteInput); - mUnreadBuilder.setReadPendingIntent(markAsReadPendingIntent); - mBuilder.extend(new NotificationCompat.CarExtender().setUnreadConversation(mUnreadBuilder.build())); int addedActionsCount = 1; mBuilder.addAction(markReadAction); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { @@ -617,8 +619,7 @@ public class NotificationService { return mBuilder; } - private void modifyForImage(final Builder builder, final UnreadConversation.Builder uBuilder, - final Message message, final ArrayList messages) { + private void modifyForImage(final Builder builder, final Message message, final ArrayList messages) { try { final Bitmap bitmap = mXmppConnectionService.getFileBackend().getThumbnail(message, getPixel(288), false); final ArrayList tmp = new ArrayList<>(); @@ -639,7 +640,7 @@ public class NotificationService { } builder.setStyle(bigPictureStyle); } catch (final IOException e) { - modifyForTextOnly(builder, uBuilder, messages); + modifyForTextOnly(builder, messages); } } @@ -661,7 +662,7 @@ public class NotificationService { return builder.build(); } - private void modifyForTextOnly(final Builder builder, final UnreadConversation.Builder uBuilder, final ArrayList messages) { + 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(); final Person.Builder meBuilder = new Person.Builder().setName(mXmppConnectionService.getString(R.string.me)); @@ -715,15 +716,6 @@ public class NotificationService { } } } - /** message preview for Android Auto **/ - for (Message message : messages) { - Pair preview = UIHelper.getMessagePreview(mXmppConnectionService, message); - // only show user written text - if (!preview.second) { - uBuilder.addMessage(preview.first.toString()); - uBuilder.setLatestTimestamp(message.getTimeSent()); - } - } } private Message getImage(final Iterable messages) { -- cgit v1.2.3