From d535f07db70bd1d5fb2741717278d20f550a6962 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 5 Jun 2020 08:36:17 +0200 Subject: [PATCH] Broadcast new message count --- FAQ.md | 8 ++++++++ .../java/eu/faircode/email/ServiceSynchronize.java | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/FAQ.md b/FAQ.md index 08ef14dc16..8add1f8546 100644 --- a/FAQ.md +++ b/FAQ.md @@ -2333,6 +2333,14 @@ despite FairEmail explicitly requesting not to show a badge for this notificatio Note that Tesla Unread is [not supported anymore](https://forum.xda-developers.com/android/general/bad-news-tesla-unread-devoloper-t3920415). +FairEmail does send a new message count intent as well: + +``` +eu.faircode.email.NEW_MESSAGE_COUNT +``` + +The number of new, unread messages will be in an integer "*count*" parameter. +
diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 23a8685913..3b43f43b2f 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -116,6 +116,8 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences private static final int BACKOFF_ERROR_AFTER = 16; // seconds private static final long WIDGET_UPDATE_DELAY = 2500L; // milliseconds + private static final String ACTION_NEW_MESSAGE_COUNT = BuildConfig.APPLICATION_ID + ".NEW_MESSAGE_COUNT"; + private static final List PREF_EVAL = Collections.unmodifiableList(Arrays.asList( "enabled", "poll_interval" // restart account(s) )); @@ -539,6 +541,16 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences if (lastCount == null || !lastCount.equals(count)) { lastCount = count; + // Broadcast new message count + try { + Intent intent = new Intent(ACTION_NEW_MESSAGE_COUNT); + intent.putExtra("count", count); + sendBroadcast(intent); + } catch (Throwable ex) { + Log.e(ex); + } + + // Update badge try { if (count == 0 || !badge) ShortcutBadger.removeCount(ServiceSynchronize.this);