diff --git a/java/com/android/dialer/app/calllog/MissedCallNotifier.java b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
index eb7fab8..8a986dc 100644
--- a/java/com/android/dialer/app/calllog/MissedCallNotifier.java
+++ b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
@@ -18,6 +18,7 @@
 import android.app.Notification;
 import android.app.Notification.Builder;
 import android.app.PendingIntent;
+import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.Bitmap;
@@ -32,6 +33,9 @@
 import android.support.v4.os.BuildCompat;
 import android.support.v4.os.UserManagerCompat;
 import android.support.v4.util.Pair;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
 import android.text.BidiFormatter;
 import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
@@ -57,6 +61,7 @@
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
 import com.android.dialer.util.DialerUtils;
 import com.android.dialer.util.IntentUtil;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
@@ -113,6 +118,8 @@
 
     List<NewCall> newCalls = callLogNotificationsQueryHelper.getNewMissedCalls();
 
+    removeSelfManagedCalls(newCalls);
+
     if ((newCalls != null && newCalls.isEmpty()) || count == 0) {
       // No calls to notify about: clear the notification.
       CallLogNotificationsQueryHelper.markAllMissedCallsInCallLogAsRead(context);
@@ -236,6 +243,39 @@
     }
   }
 
+  /**
+   * Remove self-managed calls from {@code newCalls}. If a {@link PhoneAccount} declared it is
+   * {@link PhoneAccount#CAPABILITY_SELF_MANAGED}, it should handle the in call UI and notifications
+   * itself, but might still write to call log with {@link
+   * PhoneAccount#EXTRA_LOG_SELF_MANAGED_CALLS}.
+   */
+  private void removeSelfManagedCalls(@Nullable List<NewCall> newCalls) {
+    if (newCalls == null) {
+      return;
+    }
+    TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
+    Iterator<NewCall> iterator = newCalls.iterator();
+    while (iterator.hasNext()) {
+      NewCall call = iterator.next();
+      if (call.accountComponentName == null || call.accountId == null) {
+        continue;
+      }
+      PhoneAccountHandle phoneAccountHandle =
+          new PhoneAccountHandle(
+              ComponentName.unflattenFromString(call.accountComponentName), call.accountId);
+      PhoneAccount phoneAccount = telecomManager.getPhoneAccount(phoneAccountHandle);
+      if (phoneAccount == null) {
+        continue;
+      }
+      if (phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_SELF_MANAGED)) {
+        LogUtil.i(
+            "MissedCallNotifier.removeSelfManagedCalls",
+            "ignoring self-managed call " + call.callsUri);
+        iterator.remove();
+      }
+    }
+  }
+
   public static void cancelAllMissedCallNotifications(@NonNull Context context) {
     NotificationManagerUtils.cancelAllInGroup(context, GROUP_KEY);
   }
diff --git a/java/com/android/dialer/app/res/values/strings.xml b/java/com/android/dialer/app/res/values/strings.xml
index 841eb9c..485bd89 100644
--- a/java/com/android/dialer/app/res/values/strings.xml
+++ b/java/com/android/dialer/app/res/values/strings.xml
@@ -652,7 +652,7 @@
   <string name="voicemail_transcription_branding_text">Transcribed by Google</string>
 
   <!-- Label indicating that a voicemail transcription is in progress [CHAR LIMIT=64] -->
-  <string name="voicemail_transcription_in_progress">Google is transcribing&#8230;</string>
+  <string name="voicemail_transcription_in_progress">Transcribing&#8230;</string>
 
   <!-- Label indicating that a voicemail transcription failed [CHAR LIMIT=64] -->
   <string name="voicemail_transcription_failed">Transcript not available.</string>
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml
index 31bc317..7fb38f6 100644
--- a/java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml
@@ -19,11 +19,11 @@
   <string name="nearby_places">Nearby places</string>
 
   <!-- Shown as a prompt to turn on location permissions and/or enable location to allow nearby places search [CHAR LIMIT=NONE]-->
-  <string name="search_location_permission">To get contact information for places near you, allow access to your location.</string>
+  <string name="search_location_permission">To get contact information for places near you, allow access to your location</string>
 
   <!-- Text on a button asking the user to grant the location permission -->
   <string name="nearby_places_allow">Allow</string>
 
   <!-- Text on a button which dismisses a prompt asking to grand the location permission -->
   <string name="nearby_places_dismiss">Dismiss</string>
-</resources>
\ No newline at end of file
+</resources>
