diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 1b32d75de8..313d3c2294 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -1866,16 +1866,10 @@ class Core { } } - int headers = 0; - for (Long id : add) - if (id < 0) - headers++; - Log.i("Notify group=" + group + " count=" + notifications.size() + - " added=" + add.size() + " removed=" + remove.size() + " headers=" + headers); + " added=" + add.size() + " removed=" + remove.size()); - if (notifications.size() == 0 || - (Build.VERSION.SDK_INT < Build.VERSION_CODES.O && headers > 0)) { + if (notifications.size() == 0) { String tag = "unseen.0"; Log.i("Notify cancel tag=" + tag); nm.cancel(tag, 1); @@ -1941,6 +1935,8 @@ class Core { boolean notify_reply = (prefs.getBoolean("notify_reply", false) && pro); boolean notify_flag = (prefs.getBoolean("notify_flag", false) && pro); boolean notify_seen = (prefs.getBoolean("notify_seen", true) || !pro); + boolean light = prefs.getBoolean("light", false); + String sound = prefs.getString("sound", null); // Get contact info Map messageContact = new HashMap<>(); @@ -1971,19 +1967,14 @@ class Core { .setCategory(NotificationCompat.CATEGORY_STATUS) .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setGroup(group) - .setGroupSummary(true); + .setGroupSummary(true) + .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN); Notification pub = builder.build(); builder .setVisibility(NotificationCompat.VISIBILITY_PRIVATE) .setPublicVersion(pub); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { - setNotificationSoundAndLight(context, builder); - builder.setOnlyAlertOnce(true); - } else - builder.setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN); - DateFormat df = SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.SHORT, SimpleDateFormat.SHORT); StringBuilder sb = new StringBuilder(); for (EntityMessage message : messages) { @@ -2059,6 +2050,7 @@ class Core { .setVisibility(NotificationCompat.VISIBILITY_PRIVATE) .setGroup(group) .setGroupSummary(false) + .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN) .setOnlyAlertOnce(true); if (notify_trash) { @@ -2158,10 +2150,15 @@ class Core { mbuilder.setColorized(true); } - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) - mbuilder.setSound(null); - else - mbuilder.setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN); + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + if (light) + mbuilder.setLights(Color.WHITE, 1000, 1000); + + Uri uri = (sound == null ? null : Uri.parse(sound)); + if (uri == null || "file".equals(uri.getScheme())) + uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); + mbuilder.setSound(uri); + } notifications.add(mbuilder.build()); } @@ -2169,20 +2166,6 @@ class Core { return notifications; } - private static void setNotificationSoundAndLight(Context context, NotificationCompat.Builder builder) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - boolean light = prefs.getBoolean("light", false); - String sound = prefs.getString("sound", null); - - if (light) - builder.setLights(Color.GREEN, 1000, 1000); - - Uri uri = (sound == null ? null : Uri.parse(sound)); - if (uri == null || "file".equals(uri.getScheme())) - uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); - builder.setSound(uri); - } - // FolderClosedException: can happen when no connectivity // IllegalStateException: