Merge "Ignore read voicemails for notifications"
diff --git a/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java b/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
index b5ca090..152a3b8 100644
--- a/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
+++ b/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
@@ -260,7 +260,7 @@
 
     /** Returns a {@link NewCall} pointed by the {@code callsUri} */
     @Nullable
-    NewCall query(Uri callsUri);
+    NewCall queryUnreadVoicemail(Uri callsUri);
   }
 
   /** Information about a new voicemail. */
@@ -415,20 +415,26 @@
 
     @Nullable
     @Override
-    public NewCall query(Uri callsUri) {
+    @SuppressWarnings("missingPermission")
+    public NewCall queryUnreadVoicemail(Uri voicemailUri) {
       if (!PermissionsUtil.hasPermission(context, Manifest.permission.READ_CALL_LOG)) {
         LogUtil.w(
             "CallLogNotificationsQueryHelper.DefaultNewCallsQuery.query",
             "No READ_CALL_LOG permission, returning null for calls lookup.");
         return null;
       }
-      final String selection = String.format("%s = '%s'", Calls.VOICEMAIL_URI, callsUri.toString());
+      Selection selection =
+          Selection.column(Calls.VOICEMAIL_URI)
+              .is("=", voicemailUri)
+              .buildUpon()
+              .and(Selection.column(Calls.IS_READ).is("IS NOT", 1))
+              .build();
       try (Cursor cursor =
           contentResolver.query(
               Calls.CONTENT_URI_WITH_VOICEMAIL,
               (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) ? PROJECTION_O : PROJECTION,
-              selection,
-              null,
+              selection.getSelection(),
+              selection.getSelectionArgs(),
               null)) {
         if (cursor == null) {
           return null;
diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java b/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
index bae30fa..e3cc515 100644
--- a/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
+++ b/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
@@ -160,7 +160,7 @@
       }
       String uri =
           notification.getTag().replace(VisualVoicemailNotifier.NOTIFICATION_TAG_PREFIX, "");
-      NewCall existingCall = queryHelper.getNewCallsQuery().query(Uri.parse(uri));
+      NewCall existingCall = queryHelper.getNewCallsQuery().queryUnreadVoicemail(Uri.parse(uri));
       if (existingCall != null) {
         result.add(existingCall);
       } else {