From ad300458343fb37abb04cf6ad10c9f8575be988e Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Fri, 12 Oct 2018 11:13:04 +0200 Subject: [PATCH] Enhance notification --- AndroidManifest.xml | 2 +- src/android/org/linphone/LinphoneService.java | 2 +- .../linphone/activities/LinphoneActivity.java | 3 ++ .../compatibility/ApiTwentySixPlus.java | 38 +++++++++++-------- .../linphone/compatibility/Compatibility.java | 5 ++- 5 files changed, 30 insertions(+), 20 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 008d536b3..403bc3041 100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -48,7 +48,7 @@ - + diff --git a/src/android/org/linphone/LinphoneService.java b/src/android/org/linphone/LinphoneService.java index 9d29bb42e..be966ed01 100644 --- a/src/android/org/linphone/LinphoneService.java +++ b/src/android/org/linphone/LinphoneService.java @@ -475,7 +475,7 @@ public final class LinphoneService extends Service { mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); mNM.cancel(INCALL_NOTIF_ID); // in case of crash the icon is not removed - Compatibility.CreateChannel(this); + Compatibility.createNotificationChannels(this); Intent notifIntent = new Intent(this, incomingReceivedActivity); notifIntent.putExtra("Notification", true); diff --git a/src/android/org/linphone/activities/LinphoneActivity.java b/src/android/org/linphone/activities/LinphoneActivity.java index edcf5729e..6e10626d5 100644 --- a/src/android/org/linphone/activities/LinphoneActivity.java +++ b/src/android/org/linphone/activities/LinphoneActivity.java @@ -1407,6 +1407,9 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick } //} + // This one is to allow floating notifications + permissionsList.add(Manifest.permission.SYSTEM_ALERT_WINDOW); + if (permissionsList.size() > 0) { String[] permissions = new String[permissionsList.size()]; permissions = permissionsList.toArray(permissions); diff --git a/src/android/org/linphone/compatibility/ApiTwentySixPlus.java b/src/android/org/linphone/compatibility/ApiTwentySixPlus.java index b5914c3ee..623a225e0 100644 --- a/src/android/org/linphone/compatibility/ApiTwentySixPlus.java +++ b/src/android/org/linphone/compatibility/ApiTwentySixPlus.java @@ -37,29 +37,35 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @TargetApi(26) public class ApiTwentySixPlus { - public static void CreateChannel(Context context) { + public static void createServiceChannel(Context context) { NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); // Create service/call notification channel String id = context.getString(R.string.notification_service_channel_id); CharSequence name = context.getString(R.string.content_title_notification_service); String description = context.getString(R.string.content_title_notification_service); - int importance = NotificationManager.IMPORTANCE_NONE; - NotificationChannel mChannel = new NotificationChannel(id, name, importance); - mChannel.setDescription(description); - mChannel.enableVibration(false); - mChannel.enableLights(false); - notificationManager.createNotificationChannel(mChannel); + NotificationChannel channel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_NONE); + channel.setDescription(description); + channel.enableVibration(false); + channel.enableLights(false); + channel.setShowBadge(false); + notificationManager.createNotificationChannel(channel); + } + + public static void createMessageChannel(Context context) { + NotificationManager notificationManager = + (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); // Create message notification channel - id = context.getString(R.string.notification_channel_id); - name = context.getString(R.string.content_title_notification); - description = context.getString(R.string.content_title_notification); - importance = NotificationManager.IMPORTANCE_HIGH; - mChannel = new NotificationChannel(id, name, importance); - mChannel.setDescription(description); - mChannel.setLightColor(context.getColor(R.color.notification_color_led)); - mChannel.enableLights(true); - notificationManager.createNotificationChannel(mChannel); + String id = context.getString(R.string.notification_channel_id); + String name = context.getString(R.string.content_title_notification); + String description = context.getString(R.string.content_title_notification); + NotificationChannel channel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); + channel.setDescription(description); + channel.setLightColor(context.getColor(R.color.notification_color_led)); + channel.enableLights(true); + channel.enableVibration(true); + channel.setShowBadge(true); + notificationManager.createNotificationChannel(channel); } public static Notification createMessageNotification(Context context, diff --git a/src/android/org/linphone/compatibility/Compatibility.java b/src/android/org/linphone/compatibility/Compatibility.java index 86927aa1c..cefd182bc 100644 --- a/src/android/org/linphone/compatibility/Compatibility.java +++ b/src/android/org/linphone/compatibility/Compatibility.java @@ -36,9 +36,10 @@ import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.widget.TextView; public class Compatibility { - public static void CreateChannel(Context context) { + public static void createNotificationChannels(Context context) { if (Version.sdkAboveOrEqual(Version.API26_O_80)) { - ApiTwentySixPlus.CreateChannel(context); + ApiTwentySixPlus.createServiceChannel(context); + ApiTwentySixPlus.createMessageChannel(context); } } public static Notification createSimpleNotification(Context context, String title, String text, PendingIntent intent) {