diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index bf82c470e..78e9ec489 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -723,7 +723,9 @@ public class LinphoneManager implements LinphoneCoreListener { LinphoneService.instance().displayMessageNotification(from.asStringUriOnly(), from.getUserName(), textMessage); } } - } catch (Exception e) { } + } catch (Exception e) { + Log.e(e); + } } public String getLastLcStatusMessage() { diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java index f88dae86d..9d9c93110 100644 --- a/src/org/linphone/LinphoneService.java +++ b/src/org/linphone/LinphoneService.java @@ -388,18 +388,23 @@ public final class LinphoneService extends Service { mMsgNotifCount++; } - Uri pictureUri; + Uri pictureUri = null; try { Contact contact = ContactsManager.getInstance().findContactWithAddress(LinphoneCoreFactory.instance().createLinphoneAddress(fromSipUri)); - pictureUri = contact.getPhotoUri(); + if (contact != null) + pictureUri = contact.getPhotoUri(); } catch (LinphoneCoreException e1) { - Log.e("Cannot parse from address",e1); - pictureUri=null; + Log.e("Cannot parse from address ", e1); } + Bitmap bm = null; - try { - bm = MediaStore.Images.Media.getBitmap(getContentResolver(), pictureUri); - } catch (Exception e) { + if (pictureUri != null) { + try { + bm = MediaStore.Images.Media.getBitmap(getContentResolver(), pictureUri); + } catch (Exception e) { + bm = BitmapFactory.decodeResource(getResources(), R.drawable.unknown_small); + } + } else { bm = BitmapFactory.decodeResource(getResources(), R.drawable.unknown_small); } mMsgNotif = Compatibility.createMessageNotification(getApplicationContext(), mMsgNotifCount, fromName, message, bm, notifContentIntent); diff --git a/src/org/linphone/compatibility/ApiTwentyOnePlus.java b/src/org/linphone/compatibility/ApiTwentyOnePlus.java index 27b80109e..d02e5c3e5 100644 --- a/src/org/linphone/compatibility/ApiTwentyOnePlus.java +++ b/src/org/linphone/compatibility/ApiTwentyOnePlus.java @@ -7,6 +7,7 @@ import android.app.Notification; import android.app.PendingIntent; import android.content.Context; import android.graphics.Bitmap; +import android.support.v4.app.NotificationCompat; import android.view.ViewTreeObserver; import android.view.ViewTreeObserver.OnGlobalLayoutListener; /* @@ -42,20 +43,17 @@ public class ApiTwentyOnePlus { } else { title = context.getString(R.string.unread_messages).replace("%i", String.valueOf(msgCount)); } - - Notification notif = new Notification.Builder(context) + + Notification notif = new NotificationCompat.Builder(context) .setContentTitle(title) .setContentText(msg) .setSmallIcon(R.drawable.chat_icon_over) .setAutoCancel(true) .setContentIntent(intent) - .setDefaults( - Notification.DEFAULT_LIGHTS - | Notification.DEFAULT_SOUND - | Notification.DEFAULT_VIBRATE) - .setWhen(System.currentTimeMillis()) .setLargeIcon(contactIcon) .setCategory(Notification.CATEGORY_MESSAGE) + .setVisibility(Notification.VISIBILITY_PRIVATE) + .setPriority(Notification.PRIORITY_HIGH) .build(); return notif; @@ -65,15 +63,16 @@ public class ApiTwentyOnePlus { String title, String msg, int iconID, Bitmap contactIcon, String contactName, PendingIntent intent) { - Notification notif = new Notification.Builder(context).setContentTitle(contactName) - .setContentText(msg).setSmallIcon(iconID) + Notification notif = new NotificationCompat.Builder(context).setContentTitle(contactName) + .setContentText(msg) + .setSmallIcon(iconID) .setAutoCancel(false) .setContentIntent(intent) - .setWhen(System.currentTimeMillis()) .setLargeIcon(contactIcon) .setCategory(Notification.CATEGORY_CALL) + .setVisibility(Notification.VISIBILITY_PUBLIC) + .setPriority(Notification.PRIORITY_HIGH) .build(); - notif.flags |= Notification.FLAG_ONGOING_EVENT; return notif; } @@ -82,27 +81,27 @@ public class ApiTwentyOnePlus { Notification notif; if (largeIcon != null) { - notif = new Notification.Builder(context) + notif = new NotificationCompat.Builder(context) .setContentTitle(title) .setContentText(message) .setSmallIcon(icon, level) .setLargeIcon(largeIcon) .setContentIntent(intent) - .setWhen(System.currentTimeMillis()) + .setCategory(Notification.CATEGORY_SERVICE) + .setVisibility(Notification.VISIBILITY_SECRET) + .setPriority(Notification.PRIORITY_DEFAULT) .build(); } else { - notif = new Notification.Builder(context) + notif = new NotificationCompat.Builder(context) .setContentTitle(title) .setContentText(message) .setSmallIcon(icon, level) .setContentIntent(intent) - .setWhen(System.currentTimeMillis()) .setCategory(Notification.CATEGORY_SERVICE) + .setVisibility(Notification.VISIBILITY_SECRET) + .setPriority(Notification.PRIORITY_DEFAULT) .build(); } - if (isOngoingEvent) { - notif.flags |= Notification.FLAG_ONGOING_EVENT; - } return notif; }