summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java')
-rw-r--r--java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java25
1 files changed, 23 insertions, 2 deletions
diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java b/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
index e3279ce26..2e12cecf7 100644
--- a/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
+++ b/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
@@ -67,9 +67,11 @@ class VisualVoicemailUpdateTask implements Worker<VisualVoicemailUpdateTask.Inpu
// Query failed, just return
return;
}
- boolean shouldAlert = !voicemailsToNotify.isEmpty();
- voicemailsToNotify.addAll(getAndUpdateVoicemailsWithExistingNotification(context, queryHelper));
voicemailsToNotify = filterBlockedNumbers(context, queryHandler, voicemailsToNotify);
+ boolean shouldAlert =
+ !voicemailsToNotify.isEmpty()
+ && voicemailsToNotify.size() > getExistingNotificationCount(context);
+ voicemailsToNotify.addAll(getAndUpdateVoicemailsWithExistingNotification(context, queryHelper));
if (voicemailsToNotify.isEmpty()) {
LogUtil.i("VisualVoicemailUpdateTask.updateNotification", "no voicemails to notify about");
VisualVoicemailNotifier.cancelAllVoicemailNotifications(context);
@@ -107,6 +109,25 @@ class VisualVoicemailUpdateTask implements Worker<VisualVoicemailUpdateTask.Inpu
VoicemailNotificationJobService.scheduleJob(context);
}
+ @WorkerThread
+ @NonNull
+ private static int getExistingNotificationCount(Context context) {
+ Assert.isWorkerThread();
+ int result = 0;
+ for (StatusBarNotification notification :
+ DialerNotificationManager.getActiveNotifications(context)) {
+ if (notification.getId() != VisualVoicemailNotifier.NOTIFICATION_ID) {
+ continue;
+ }
+ if (TextUtils.isEmpty(notification.getTag())
+ || !notification.getTag().startsWith(VisualVoicemailNotifier.NOTIFICATION_TAG_PREFIX)) {
+ continue;
+ }
+ result++;
+ }
+ return result;
+ }
+
/**
* Cancel notification for voicemail that is already deleted. Returns a list of voicemails that
* already has notifications posted and should be updated.