diff --git a/src/com/android/phone/CallNotifier.java b/src/com/android/phone/CallNotifier.java
index c9ad397..80807a2 100644
--- a/src/com/android/phone/CallNotifier.java
+++ b/src/com/android/phone/CallNotifier.java
@@ -802,7 +802,7 @@
             if (VDBG) log("CallerInfo query complete, posting missed call notification");
 
             mApplication.notificationMgr.notifyMissedCall(ci.name, ci.phoneNumber,
-                    ci.phoneLabel, ci.cachedPhoto, ci.cachedPhotoIcon,
+                    ci.numberPresentation, ci.phoneLabel, ci.cachedPhoto, ci.cachedPhotoIcon,
                     ((Long) cookie).longValue());
         } else if (cookie instanceof Connection) {
             final Connection c = (Connection) cookie;
@@ -1715,7 +1715,7 @@
                     number = PhoneUtils.modifyForSpecialCnapCases(mApplication,
                             ci, number, ci.numberPresentation);
                 }
-                mApplication.notificationMgr.notifyMissedCall(name, number,
+                mApplication.notificationMgr.notifyMissedCall(name, number, ci.numberPresentation,
                         ci.phoneLabel, ci.cachedPhoto, ci.cachedPhotoIcon, date);
             }
         } else {
diff --git a/src/com/android/phone/NotificationMgr.java b/src/com/android/phone/NotificationMgr.java
index 3e30798..d8a91f2 100644
--- a/src/com/android/phone/NotificationMgr.java
+++ b/src/com/android/phone/NotificationMgr.java
@@ -398,7 +398,8 @@
                             }
                             // We couldn't find person Uri, so we're sure we cannot obtain a photo.
                             // Call notifyMissedCall() right now.
-                            notifyMissedCall(n.name, n.number, n.type, null, null, n.date);
+                            notifyMissedCall(n.name, n.number, n.presentation, n.type, null, null,
+                                    n.date);
                         }
 
                         if (DBG) log("closing contact cursor.");
@@ -414,7 +415,7 @@
                 int token, Drawable photo, Bitmap photoIcon, Object cookie) {
             if (DBG) log("Finished loading image: " + photo);
             NotificationInfo n = (NotificationInfo) cookie;
-            notifyMissedCall(n.name, n.number, n.type, photo, photoIcon, n.date);
+            notifyMissedCall(n.name, n.number, n.presentation, n.type, photo, photoIcon, n.date);
         }
 
         /**
@@ -471,8 +472,8 @@
      * should be used when non-null.
      * @param date the time when the missed call happened
      */
-    /* package */ void notifyMissedCall(
-            String name, String number, String type, Drawable photo, Bitmap photoIcon, long date) {
+    /* package */ void notifyMissedCall(String name, String number, int presentation, String type,
+            Drawable photo, Bitmap photoIcon, long date) {
 
         // When the user clicks this notification, we go to the call log.
         final PendingIntent pendingCallLogIntent = PhoneGlobals.createPendingCallLogIntent(
@@ -542,8 +543,8 @@
         // TODO: consider removing equals() checks here, and modify callers of this method instead.
         if (mNumberMissedCalls == 1
                 && !TextUtils.isEmpty(number)
-                && !TextUtils.equals(number, mContext.getString(R.string.private_num))
-                && !TextUtils.equals(number, mContext.getString(R.string.unknown))){
+                && (presentation == PhoneConstants.PRESENTATION_ALLOWED ||
+                        presentation == PhoneConstants.PRESENTATION_PAYPHONE)) {
             if (DBG) log("Add actions with the number " + number);
 
             builder.addAction(R.drawable.stat_sys_phone_call,
