From 2b6ac73d9e43882ca25dbd2d1b523260b9e283d8 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 1 Apr 2021 17:23:42 +0200 Subject: [PATCH] Fixed issue with bubbles + fixed french translation issue --- .../compatibility/Api29Compatibility.kt | 20 +++++++++++++++++++ .../linphone/compatibility/Compatibility.kt | 6 +++++- .../notifications/NotificationsManager.kt | 6 ++++-- app/src/main/res/values-fr/strings.xml | 4 ++-- 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/linphone/compatibility/Api29Compatibility.kt b/app/src/main/java/org/linphone/compatibility/Api29Compatibility.kt index 39371aa9a..035a190a2 100644 --- a/app/src/main/java/org/linphone/compatibility/Api29Compatibility.kt +++ b/app/src/main/java/org/linphone/compatibility/Api29Compatibility.kt @@ -20,6 +20,7 @@ package org.linphone.compatibility import android.annotation.TargetApi +import android.app.NotificationChannel import android.app.NotificationManager import android.content.ContentValues import android.content.Context @@ -30,6 +31,7 @@ import android.provider.MediaStore import android.view.View import android.view.contentcapture.ContentCaptureContext import android.view.contentcapture.ContentCaptureSession +import androidx.core.app.NotificationManagerCompat import org.linphone.R import org.linphone.core.ChatRoom import org.linphone.core.Content @@ -41,6 +43,24 @@ import org.linphone.utils.LinphoneUtils @TargetApi(29) class Api29Compatibility { companion object { + fun createMessageChannel( + context: Context, + notificationManager: NotificationManagerCompat + ) { + // Create messages notification channel + val id = context.getString(R.string.notification_channel_chat_id) + val name = context.getString(R.string.notification_channel_chat_name) + val description = context.getString(R.string.notification_channel_chat_name) + val channel = NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH) + channel.description = description + channel.lightColor = context.getColor(R.color.notification_led_color) + channel.enableLights(true) + channel.enableVibration(true) + channel.setShowBadge(true) + channel.setAllowBubbles(true) + notificationManager.createNotificationChannel(channel) + } + fun extractLocusIdFromIntent(intent: Intent): String? { return intent.getStringExtra(Intent.EXTRA_LOCUS_ID) } diff --git a/app/src/main/java/org/linphone/compatibility/Compatibility.kt b/app/src/main/java/org/linphone/compatibility/Compatibility.kt index 6678644b6..2420db9ae 100644 --- a/app/src/main/java/org/linphone/compatibility/Compatibility.kt +++ b/app/src/main/java/org/linphone/compatibility/Compatibility.kt @@ -84,7 +84,11 @@ class Compatibility { Api26Compatibility.createServiceChannel(context, notificationManager) Api26Compatibility.createMissedCallChannel(context, notificationManager) Api26Compatibility.createIncomingCallChannel(context, notificationManager) - Api26Compatibility.createMessageChannel(context, notificationManager) + if (Version.sdkAboveOrEqual(Version.API29_ANDROID_10)) { + Api29Compatibility.createMessageChannel(context, notificationManager) + } else { + Api26Compatibility.createMessageChannel(context, notificationManager) + } } } diff --git a/app/src/main/java/org/linphone/notifications/NotificationsManager.kt b/app/src/main/java/org/linphone/notifications/NotificationsManager.kt index eb981cdb1..b0269231e 100644 --- a/app/src/main/java/org/linphone/notifications/NotificationsManager.kt +++ b/app/src/main/java/org/linphone/notifications/NotificationsManager.kt @@ -737,9 +737,11 @@ class NotificationsManager(private val context: Context) { .setDeleteIntent(getMarkMessageAsReadPendingIntent(notifiable)) } - if (Compatibility.canChatMessageChannelBubble(context)) { - notificationBuilder.bubbleMetadata = bubble + if (!Compatibility.canChatMessageChannelBubble(context)) { + Log.w("[Notifications Manager] This conversation wasn't granted bubble permission yet") } + // We still need to set the bubbleMetadata, otherwise user won't ever be able to enable bubbles! + notificationBuilder.bubbleMetadata = bubble return notificationBuilder.build() } diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 3eb9950a5..12c740738 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -553,8 +553,8 @@ Afficher ou masquer le menu de sélection du périphérique audio <Censuré> Envoyer le son vers le haut-parleur - Superposition des notifications push sur l\'écran - L\'autorisation d\'afficher les notifications push en superposition est requise + Notification d\'appel flottante + Une autorisation explicite est requise Marquer comme lu lorsque la notification est supprimée Seront remplacés par les raccourcis de contacts si activés Transport