diff --git a/res/layout/call_log_contact_photo.xml b/res/layout/call_log_contact_photo.xml
index 91b0743..6afb1ab 100644
--- a/res/layout/call_log_contact_photo.xml
+++ b/res/layout/call_log_contact_photo.xml
@@ -1,10 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
 <merge xmlns:android="http://schemas.android.com/apk/res/android">
-    <QuickContactBadge
+    <FrameLayout
         android:id="@+id/contact_photo"
         android:layout_width="@dimen/call_log_list_contact_photo_size"
         android:layout_height="@dimen/call_log_list_contact_photo_size"
         android:layout_alignParentLeft="true"
         android:layout_centerInParent="true"
-    />
+    >
+        <QuickContactBadge
+            android:id="@+id/quick_contact_photo"
+            android:layout_width="@dimen/call_log_list_contact_photo_size"
+            android:layout_height="@dimen/call_log_list_contact_photo_size"
+        />
+        <ImageView
+            android:id="@+id/plain_contact_photo"
+            android:layout_width="@dimen/call_log_list_contact_photo_size"
+            android:layout_height="@dimen/call_log_list_contact_photo_size"
+        />
+    </FrameLayout>
 </merge>
diff --git a/src/com/android/contacts/calllog/CallLogFragment.java b/src/com/android/contacts/calllog/CallLogFragment.java
index 046988b..3f3fd8d 100644
--- a/src/com/android/contacts/calllog/CallLogFragment.java
+++ b/src/com/android/contacts/calllog/CallLogFragment.java
@@ -63,7 +63,6 @@
 import android.view.ViewGroup;
 import android.view.ViewTreeObserver;
 import android.widget.ListView;
-import android.widget.QuickContactBadge;
 import android.widget.TextView;
 
 import java.util.LinkedList;
@@ -176,7 +175,7 @@
     private TextView mStatusMessageAction;
 
     public static final class ContactInfo {
-        public long personId;
+        public long personId = -1;
         public String name;
         public int type;
         public String label;
@@ -657,6 +656,8 @@
             // Get the views to bind to.
             CallLogListItemViews views = CallLogListItemViews.fromView(view);
             views.callView.setOnClickListener(this);
+            // Do nothing when a plain photo is clicked. Without this, the list item will fire.
+            views.plainPhotoView.setOnClickListener(null);
             view.setTag(views);
         }
 
@@ -763,10 +764,7 @@
             // New items also use the highlighted version of the text.
             final boolean isHighlighted = isNew;
             mCallLogViewsHelper.setPhoneCallDetails(views, details, useIcons, isHighlighted);
-            if (views.photoView != null) {
-                bindQuickContact(views.photoView, thumbnailUri, personId, lookupKey);
-            }
-
+            setPhoto(views, thumbnailUri, personId, lookupKey);
 
             // Listen for the first draw
             if (mPreDrawListener == null) {
@@ -794,14 +792,20 @@
             return callTypes;
         }
 
-        private void bindQuickContact(QuickContactBadge view, Uri thumbnailUri, long contactId,
+        private void setPhoto(CallLogListItemViews views, Uri thumbnailUri, long contactId,
                 String lookupKey) {
-            view.assignContactUri(getContactUri(contactId, lookupKey));
-            mContactPhotoManager.loadPhoto(view, thumbnailUri);
-        }
-
-        private Uri getContactUri(long contactId, String lookupKey) {
-            return Contacts.getLookupUri(contactId, lookupKey);
+            if (contactId == -1) {
+                // This does not correspond to a contact, do not use the QuickContactBadge.
+                mContactPhotoManager.loadPhoto(views.plainPhotoView, thumbnailUri);
+                views.plainPhotoView.setVisibility(View.VISIBLE);
+                views.quickContactView.setVisibility(View.GONE);
+            } else {
+                views.quickContactView.assignContactUri(
+                        Contacts.getLookupUri(contactId, lookupKey));
+                mContactPhotoManager.loadPhoto(views.quickContactView, thumbnailUri);
+                views.quickContactView.setVisibility(View.VISIBLE);
+                views.plainPhotoView.setVisibility(View.GONE);
+            }
         }
 
         /**
diff --git a/src/com/android/contacts/calllog/CallLogListItemViews.java b/src/com/android/contacts/calllog/CallLogListItemViews.java
index 51bc535..90f78f7 100644
--- a/src/com/android/contacts/calllog/CallLogListItemViews.java
+++ b/src/com/android/contacts/calllog/CallLogListItemViews.java
@@ -21,6 +21,7 @@
 
 import android.content.Context;
 import android.view.View;
+import android.widget.ImageView;
 import android.widget.QuickContactBadge;
 import android.widget.TextView;
 
@@ -28,8 +29,10 @@
  * Simple value object containing the various views within a call log entry.
  */
 public final class CallLogListItemViews {
-    /** The quick contact badge for the contact. Only present for group and stand alone entries. */
-    public final QuickContactBadge photoView;
+    /** The quick contact badge for the contact. */
+    public final QuickContactBadge quickContactView;
+    /** The photo view without quick contact badge. */
+    public final ImageView plainPhotoView;
     /** The main action button on the entry. */
     public final View callView;
     /** The play action button used for voicemail. */
@@ -47,11 +50,12 @@
     /** The text of the header in a stand-alone row, or null for other types of rows. */
     public final TextView listHeaderTextView;
 
-    private CallLogListItemViews(QuickContactBadge photoView, View callView,
-            View playView, View unheardView, View dividerView,
+    private CallLogListItemViews(QuickContactBadge quickContactView, ImageView photoView,
+            View callView, View playView, View unheardView, View dividerView,
             PhoneCallDetailsViews phoneCallDetailsViews, View listItemView, View listHeaderView,
             TextView listHeaderTextView) {
-        this.photoView = photoView;
+        this.quickContactView = quickContactView;
+        this.plainPhotoView = photoView;
         this.callView = callView;
         this.playView = playView;
         this.unheardView = unheardView;
@@ -63,7 +67,9 @@
     }
 
     public static CallLogListItemViews fromView(View view) {
-        return new CallLogListItemViews((QuickContactBadge) view.findViewById(R.id.contact_photo),
+        return new CallLogListItemViews(
+                (QuickContactBadge) view.findViewById(R.id.quick_contact_photo),
+                (ImageView) view.findViewById(R.id.plain_contact_photo),
                 view.findViewById(R.id.call_icon),
                 view.findViewById(R.id.play_icon),
                 view.findViewById(R.id.unheard_icon),
@@ -77,6 +83,7 @@
     public static CallLogListItemViews createForTest(Context context) {
         return new CallLogListItemViews(
                 new QuickContactBadge(context),
+                new ImageView(context),
                 new View(context),
                 new View(context),
                 new View(context),
diff --git a/tests/src/com/android/contacts/activities/CallLogActivityTests.java b/tests/src/com/android/contacts/activities/CallLogActivityTests.java
index 8372d9c..b642ffe 100644
--- a/tests/src/com/android/contacts/activities/CallLogActivityTests.java
+++ b/tests/src/com/android/contacts/activities/CallLogActivityTests.java
@@ -266,6 +266,31 @@
         assertNumberAndLabelAre(views, TEST_FORMATTED_NUMBER, numberLabel);
     }
 
+    @MediumTest
+    public void testBindView_WithQuickContactBadge() {
+        mCursor.moveToFirst();
+        insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE,
+                "John Doe", Phone.TYPE_HOME, "");
+        View view = mAdapter.newStandAloneView(getActivity(), mParentView);
+        mAdapter.bindStandAloneView(view, getActivity(), mCursor);
+
+        CallLogListItemViews views = (CallLogListItemViews) view.getTag();
+        assertEquals(View.VISIBLE, views.quickContactView.getVisibility());
+        assertEquals(View.GONE, views.plainPhotoView.getVisibility());
+    }
+
+    @MediumTest
+    public void testBindView_WithoutQuickContactBadge() {
+        mCursor.moveToFirst();
+        insert(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
+        View view = mAdapter.newStandAloneView(getActivity(), mParentView);
+        mAdapter.bindStandAloneView(view, getActivity(), mCursor);
+
+        CallLogListItemViews views = (CallLogListItemViews) view.getTag();
+        assertEquals(View.GONE, views.quickContactView.getVisibility());
+        assertEquals(View.VISIBLE, views.plainPhotoView.getVisibility());
+    }
+
     /** Returns the label associated with a given phone type. */
     private CharSequence getTypeLabel(int phoneType) {
         return Phone.getTypeLabel(getActivity().getResources(), phoneType, "");
