From 902d4c710138bc9323ac9d1c15ea4316c2a244df Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 6 Feb 2014 17:50:44 +0100 Subject: [PATCH] Apply latests notification improvements for other Android versions --- .../compatibility/ApiEighteenPlus.java | 55 ------------------- .../linphone/compatibility/ApiElevenPlus.java | 33 ++++++++++- .../compatibility/ApiSixteenPlus.java | 26 +++++++++ .../linphone/compatibility/Compatibility.java | 22 ++++---- 4 files changed, 68 insertions(+), 68 deletions(-) delete mode 100644 src/org/linphone/compatibility/ApiEighteenPlus.java diff --git a/src/org/linphone/compatibility/ApiEighteenPlus.java b/src/org/linphone/compatibility/ApiEighteenPlus.java deleted file mode 100644 index 30371810f..000000000 --- a/src/org/linphone/compatibility/ApiEighteenPlus.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.linphone.compatibility; - -/* -ApiEighteenPlus.java -Copyright (C) 2012 Belledonne Communications, Grenoble, France - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -import android.annotation.TargetApi; -import android.app.Notification; -import android.app.PendingIntent; -import android.content.Context; -import android.graphics.Bitmap; - -@TargetApi(18) -public class ApiEighteenPlus { - public static Notification createNotification(Context context, String title, String message, int icon, int level, Bitmap largeIcon, PendingIntent intent) { - Notification notif; - - if (largeIcon != null) { - notif = new Notification.Builder(context) - .setContentTitle(title) - .setContentText(message) - .setSmallIcon(icon, level) - .setLargeIcon(largeIcon) - .setContentIntent(intent) - .setWhen(System.currentTimeMillis()) - .build(); - } else { - notif = new Notification.Builder(context) - .setContentTitle(title) - .setContentText(message) - .setSmallIcon(icon, level) - .setContentIntent(intent) - .setWhen(System.currentTimeMillis()) - .build(); - } - notif.flags |= Notification.FLAG_ONGOING_EVENT; - - return notif; - } -} diff --git a/src/org/linphone/compatibility/ApiElevenPlus.java b/src/org/linphone/compatibility/ApiElevenPlus.java index 10bbfc3ed..2fe86e854 100644 --- a/src/org/linphone/compatibility/ApiElevenPlus.java +++ b/src/org/linphone/compatibility/ApiElevenPlus.java @@ -51,7 +51,7 @@ public class ApiElevenPlus { PendingIntent intent) { String title; if (msgCount == 1) { - title = "Unread message from %s".replace("%s", msgSender); + title = msgSender; } else { title = "%i unread messages" .replace("%i", String.valueOf(msgCount)); @@ -60,6 +60,7 @@ public class ApiElevenPlus { Notification notif = new Notification.Builder(context) .setContentTitle(title) .setContentText(msg) + .setContentIntent(intent) .setSmallIcon(R.drawable.chat_icon_over) .setAutoCancel(true) .setDefaults( @@ -68,7 +69,6 @@ public class ApiElevenPlus { | Notification.DEFAULT_VIBRATE) .setWhen(System.currentTimeMillis()) .setLargeIcon(contactIcon).getNotification(); - notif.contentIntent = intent; return notif; } @@ -81,12 +81,39 @@ public class ApiElevenPlus { Notification notif = new Notification.Builder(context).setContentTitle(contactName) .setContentText(msg).setSmallIcon(iconID) .setAutoCancel(false) + .setContentIntent(intent) .setWhen(System.currentTimeMillis()) .setLargeIcon(contactIcon).getNotification(); - notif.contentIntent = intent; return notif; } + + @SuppressWarnings("deprecation") + public static Notification createNotification(Context context, String title, String message, int icon, int level, Bitmap largeIcon, PendingIntent intent) { + Notification notif; + + if (largeIcon != null) { + notif = new Notification.Builder(context) + .setContentTitle(title) + .setContentText(message) + .setSmallIcon(icon, level) + .setLargeIcon(largeIcon) + .setContentIntent(intent) + .setWhen(System.currentTimeMillis()) + .getNotification(); + } else { + notif = new Notification.Builder(context) + .setContentTitle(title) + .setContentText(message) + .setSmallIcon(icon, level) + .setContentIntent(intent) + .setWhen(System.currentTimeMillis()) + .getNotification(); + } + notif.flags |= Notification.FLAG_ONGOING_EVENT; + + return notif; + } public static void copyTextToClipboard(Context context, String msg) { ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); diff --git a/src/org/linphone/compatibility/ApiSixteenPlus.java b/src/org/linphone/compatibility/ApiSixteenPlus.java index 3d8288a27..5b1ef725d 100644 --- a/src/org/linphone/compatibility/ApiSixteenPlus.java +++ b/src/org/linphone/compatibility/ApiSixteenPlus.java @@ -74,6 +74,32 @@ public class ApiSixteenPlus { return notif; } + + public static Notification createNotification(Context context, String title, String message, int icon, int level, Bitmap largeIcon, PendingIntent intent) { + Notification notif; + + if (largeIcon != null) { + notif = new Notification.Builder(context) + .setContentTitle(title) + .setContentText(message) + .setSmallIcon(icon, level) + .setLargeIcon(largeIcon) + .setContentIntent(intent) + .setWhen(System.currentTimeMillis()) + .build(); + } else { + notif = new Notification.Builder(context) + .setContentTitle(title) + .setContentText(message) + .setSmallIcon(icon, level) + .setContentIntent(intent) + .setWhen(System.currentTimeMillis()) + .build(); + } + notif.flags |= Notification.FLAG_ONGOING_EVENT; + + return notif; + } public static void removeGlobalLayoutListener(ViewTreeObserver viewTreeObserver, OnGlobalLayoutListener keyboardListener) { viewTreeObserver.removeOnGlobalLayoutListener(keyboardListener); diff --git a/src/org/linphone/compatibility/Compatibility.java b/src/org/linphone/compatibility/Compatibility.java index 51261bba2..277a65ac6 100644 --- a/src/org/linphone/compatibility/Compatibility.java +++ b/src/org/linphone/compatibility/Compatibility.java @@ -134,7 +134,7 @@ public class Compatibility { title = "%i unread messages".replace("%i", String.valueOf(msgCount)); } - if (Version.sdkAboveOrEqual(16)) { + if (Version.sdkAboveOrEqual(Version.API16_JELLY_BEAN_41)) { notif = ApiSixteenPlus.createMessageNotification(context, msgCount, msgSender, msg, contactIcon, intent); } else if (Version.sdkAboveOrEqual(Version.API11_HONEYCOMB_30)) { notif = ApiElevenPlus.createMessageNotification(context, msgCount, msgSender, msg, contactIcon, intent); @@ -147,7 +147,7 @@ public class Compatibility { public static Notification createInCallNotification(Context context, String title, String msg, int iconID, Bitmap contactIcon, String contactName, PendingIntent intent) { Notification notif = null; - if (Version.sdkAboveOrEqual(16)) { + if (Version.sdkAboveOrEqual(Version.API16_JELLY_BEAN_41)) { notif = ApiSixteenPlus.createInCallNotification(context, title, msg, iconID, contactIcon, contactName, intent); } else if (Version.sdkAboveOrEqual(Version.API11_HONEYCOMB_30)) { notif = ApiElevenPlus.createInCallNotification(context, title, msg, iconID, contactIcon, contactName, intent); @@ -157,6 +157,16 @@ public class Compatibility { return notif; } + public static Notification createNotification(Context context, String title, String message, int icon, int iconLevel, Bitmap largeIcon, PendingIntent intent) { + if (Version.sdkAboveOrEqual(Version.API16_JELLY_BEAN_41)) { + return ApiSixteenPlus.createNotification(context, title, message, icon, iconLevel, largeIcon, intent); + } else if (Version.sdkAboveOrEqual(Version.API11_HONEYCOMB_30)) { + return ApiElevenPlus.createNotification(context, title, message, icon, iconLevel, largeIcon, intent); + } else { + return ApiFivePlus.createNotification(context, title, message, icon, iconLevel, intent); + } + } + public static String refreshContactName(ContentResolver cr, String id) { if (Version.sdkAboveOrEqual(Version.API05_ECLAIR_20)) { return ApiFivePlus.refreshContactName(cr, id); @@ -266,12 +276,4 @@ public class Compatibility { ApiFivePlus.setAudioManagerInCallMode(manager); } } - - public static Notification createNotification(Context context, String title, String message, int icon, int iconLevel, Bitmap largeIcon, PendingIntent intent) { - if (Version.sdkAboveOrEqual(18)) { - return ApiEighteenPlus.createNotification(context, title, message, icon, iconLevel, largeIcon, intent); - } else { - return ApiFivePlus.createNotification(context, title, message, icon, iconLevel, intent); - } - } }