diff --git a/res/values/strings.xml b/res/values/strings.xml
index a0a518f..2990c42 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -73,8 +73,8 @@
     <string name="notification_crashedInCallService_title">Crashed phone app</string>
     <!-- Body of the notification presented when an in call service crashed. [CHAR LIMIT=NONE] -->
     <string name="notification_crashedInCallService_body">
-        Your Phone app <xliff:g id="in_call_service_app_name">%s</xliff:g> has crashed.
-        You call was continued using the Phone app that came with your device.
+        Your phone app <xliff:g id="in_call_service_app_name">%s</xliff:g> has crashed.
+        You call was continued using the phone app that came with your device.
     </string>
 
     <!-- Content description of the call muted notification icon for
diff --git a/src/com/android/server/telecom/InCallController.java b/src/com/android/server/telecom/InCallController.java
index 6a9771a..171bdf3 100644
--- a/src/com/android/server/telecom/InCallController.java
+++ b/src/com/android/server/telecom/InCallController.java
@@ -24,6 +24,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.ServiceConnection;
+import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
@@ -1804,6 +1805,17 @@
     }
 
     private void sendCrashedInCallServiceNotification(String packageName) {
+        PackageManager packageManager = mContext.getPackageManager();
+        CharSequence appName;
+        try {
+            appName = packageManager.getApplicationLabel(
+                    packageManager.getApplicationInfo(packageName, 0));
+            if (TextUtils.isEmpty(appName)) {
+                appName = packageName;
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+            appName = packageName;
+        }
         NotificationManager notificationManager = (NotificationManager) mContext
                 .getSystemService(Context.NOTIFICATION_SERVICE);
         Notification.Builder builder = new Notification.Builder(mContext,
@@ -1816,7 +1828,7 @@
                 .setStyle(new Notification.BigTextStyle()
                         .bigText(mContext.getString(
                                 R.string.notification_crashedInCallService_body,
-                                packageName)));
+                                appName)));
         notificationManager.notify(NOTIFICATION_TAG, IN_CALL_SERVICE_NOTIFICATION_ID,
                 builder.build());
     }
