diff --git a/src/com/android/contacts/list/ContactEntryListAdapter.java b/src/com/android/contacts/list/ContactEntryListAdapter.java
index 1ebf3c9..ddd90d3 100644
--- a/src/com/android/contacts/list/ContactEntryListAdapter.java
+++ b/src/com/android/contacts/list/ContactEntryListAdapter.java
@@ -78,6 +78,7 @@
         partition.setDirectoryId(Directory.DEFAULT);
         partition.setDirectoryType(getContext().getString(R.string.contactsList));
         partition.setPriorityDirectory(true);
+        partition.setPhotoSupported(true);
         return partition;
     }
 
@@ -228,6 +229,7 @@
         int idColumnIndex = cursor.getColumnIndex(Directory._ID);
         int directoryTypeColumnIndex = cursor.getColumnIndex(DirectoryListLoader.DIRECTORY_TYPE);
         int displayNameColumnIndex = cursor.getColumnIndex(Directory.DISPLAY_NAME);
+        int photoSupportColumnIndex = cursor.getColumnIndex(Directory.PHOTO_SUPPORT);
 
         // TODO preserve the order of partition to match those of the cursor
         // Phase I: add new directories
@@ -240,6 +242,9 @@
                 partition.setDirectoryId(id);
                 partition.setDirectoryType(cursor.getString(directoryTypeColumnIndex));
                 partition.setDisplayName(cursor.getString(displayNameColumnIndex));
+                int photoSupport = cursor.getInt(photoSupportColumnIndex);
+                partition.setPhotoSupported(photoSupport == Directory.PHOTO_SUPPORT_THUMBNAIL_ONLY
+                        || photoSupport == Directory.PHOTO_SUPPORT_FULL);
                 addPartition(partition);
             }
         }
@@ -405,4 +410,12 @@
             return String.format(format, count);
         }
     }
+
+    public boolean isPhotoSupported(int partitionIndex) {
+        Partition partition = getPartition(partitionIndex);
+        if (partition instanceof DirectoryPartition) {
+            return ((DirectoryPartition) partition).isPhotoSupported();
+        }
+        return true;
+    }
 }
diff --git a/src/com/android/contacts/list/ContactListAdapter.java b/src/com/android/contacts/list/ContactListAdapter.java
index 4b34323..cd6e125 100644
--- a/src/com/android/contacts/list/ContactListAdapter.java
+++ b/src/com/android/contacts/list/ContactListAdapter.java
@@ -231,7 +231,12 @@
         view.setDividerVisible(!placement.lastInSection);
     }
 
-    protected void bindPhoto(final ContactListItemView view, Cursor cursor) {
+    protected void bindPhoto(final ContactListItemView view, int partitionIndex, Cursor cursor) {
+        if (!isPhotoSupported(partitionIndex)) {
+            view.removePhotoView();
+            return;
+        }
+
         // Set the photo, if available
         long photoId = 0;
         if (!cursor.isNull(CONTACT_PHOTO_ID_COLUMN_INDEX)) {
diff --git a/src/com/android/contacts/list/ContactListItemView.java b/src/com/android/contacts/list/ContactListItemView.java
index 2c37242..2195170 100644
--- a/src/com/android/contacts/list/ContactListItemView.java
+++ b/src/com/android/contacts/list/ContactListItemView.java
@@ -580,10 +580,7 @@
     /**
      * Removes the photo view.  Should not be needed once we start handling different
      * types of views as different types of views from the List's perspective.
-     *
-     * @deprecated
      */
-    @Deprecated
     public void removePhotoView() {
         if (mPhotoView != null) {
             removeView(mPhotoView);
diff --git a/src/com/android/contacts/list/DefaultContactListAdapter.java b/src/com/android/contacts/list/DefaultContactListAdapter.java
index 92ca06e..d0cdbfd 100644
--- a/src/com/android/contacts/list/DefaultContactListAdapter.java
+++ b/src/com/android/contacts/list/DefaultContactListAdapter.java
@@ -183,7 +183,7 @@
         if (isQuickContactEnabled()) {
             bindQuickContact(view, partition, cursor);
         } else {
-            bindPhoto(view, cursor);
+            bindPhoto(view, partition, cursor);
         }
 
         bindName(view, cursor);
diff --git a/src/com/android/contacts/list/DirectoryListLoader.java b/src/com/android/contacts/list/DirectoryListLoader.java
index b8cc2c9..558d3ae 100644
--- a/src/com/android/contacts/list/DirectoryListLoader.java
+++ b/src/com/android/contacts/list/DirectoryListLoader.java
@@ -45,12 +45,14 @@
             Directory.PACKAGE_NAME,
             Directory.TYPE_RESOURCE_ID,
             Directory.DISPLAY_NAME,
+            Directory.PHOTO_SUPPORT,
         };
 
         public static final int ID = 0;
         public static final int PACKAGE_NAME = 1;
         public static final int TYPE_RESOURCE_ID = 2;
         public static final int DISPLAY_NAME = 3;
+        public static final int PHOTO_SUPPORT = 4;
     }
 
     public static final String DIRECTORY_TYPE = "directoryType";
@@ -59,6 +61,7 @@
         Directory._ID,
         DIRECTORY_TYPE,
         Directory.DISPLAY_NAME,
+        Directory.PHOTO_SUPPORT,
     };
 
     private final ContentObserver mObserver = new ContentObserver(new Handler()) {
@@ -124,7 +127,8 @@
                     }
                 }
                 String displayName = cursor.getString(DirectoryQuery.DISPLAY_NAME);
-                result.addRow(new Object[]{directoryId, directoryType, displayName});
+                int photoSupport = cursor.getInt(DirectoryQuery.PHOTO_SUPPORT);
+                result.addRow(new Object[]{directoryId, directoryType, displayName, photoSupport});
             }
         } finally {
             cursor.close();
diff --git a/src/com/android/contacts/list/DirectoryPartition.java b/src/com/android/contacts/list/DirectoryPartition.java
index 88cc879..47a1037 100644
--- a/src/com/android/contacts/list/DirectoryPartition.java
+++ b/src/com/android/contacts/list/DirectoryPartition.java
@@ -33,6 +33,7 @@
     private String mDisplayName;
     private int mStatus;
     private boolean mPriorityDirectory;
+    private boolean mPhotoSupported;
 
     public DirectoryPartition(boolean showIfEmpty, boolean hasHeader) {
         super(showIfEmpty, hasHeader);
@@ -94,4 +95,15 @@
     public void setPriorityDirectory(boolean priorityDirectory) {
         mPriorityDirectory = priorityDirectory;
     }
+
+    /**
+     * Returns true if this directory supports photos.
+     */
+    public boolean isPhotoSupported() {
+        return mPhotoSupported;
+    }
+
+    public void setPhotoSupported(boolean flag) {
+        this.mPhotoSupported = flag;
+    }
 }
diff --git a/src/com/android/contacts/list/JoinContactListAdapter.java b/src/com/android/contacts/list/JoinContactListAdapter.java
index b1bb586..c72ebcd 100644
--- a/src/com/android/contacts/list/JoinContactListAdapter.java
+++ b/src/com/android/contacts/list/JoinContactListAdapter.java
@@ -200,7 +200,7 @@
         switch (partition) {
             case PARTITION_SUGGESTIONS: {
                 final ContactListItemView view = (ContactListItemView)itemView;
-                bindPhoto(view, cursor);
+                bindPhoto(view, partition, cursor);
                 bindName(view, cursor);
                 break;
             }
@@ -210,7 +210,7 @@
             case PARTITION_ALL_CONTACTS: {
                 final ContactListItemView view = (ContactListItemView)itemView;
                 bindSectionHeaderAndDivider(view, position);
-                bindPhoto(view, cursor);
+                bindPhoto(view, partition, cursor);
                 bindName(view, cursor);
                 break;
             }
diff --git a/src/com/android/contacts/list/StrequentContactListAdapter.java b/src/com/android/contacts/list/StrequentContactListAdapter.java
index 82f9799..12c56f3 100644
--- a/src/com/android/contacts/list/StrequentContactListAdapter.java
+++ b/src/com/android/contacts/list/StrequentContactListAdapter.java
@@ -209,7 +209,7 @@
         if (isQuickContactEnabled()) {
             bindQuickContact(view, partition, cursor);
         } else {
-            bindPhoto(view, cursor);
+            bindPhoto(view, partition, cursor);
         }
         bindPresence(view, cursor);
 
