diff --git a/src/com/android/contacts/activities/AttachPhotoActivity.java b/src/com/android/contacts/activities/AttachPhotoActivity.java
index 678c1d2..78b482e 100644
--- a/src/com/android/contacts/activities/AttachPhotoActivity.java
+++ b/src/com/android/contacts/activities/AttachPhotoActivity.java
@@ -111,6 +111,9 @@
         if (mTempPhotoUri != null) {
             outState.putString(KEY_TEMP_PHOTO_URI, mTempPhotoUri.toString());
         }
+        if (mCroppedPhotoUri != null) {
+            outState.putString(KEY_CROPPED_PHOTO_URI, mCroppedPhotoUri.toString());
+        }
     }
 
     @Override
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 28d63ec..15e119b 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -387,15 +387,12 @@
             // If directory export support is not allowed, then don't allow the user to add
             // to contacts
             if (mContactData.getDirectoryExportSupport() == Directory.EXPORT_SUPPORT_NONE) {
-                mOpenDetailsOrAddContactImage.setImageResource(R.drawable.ic_contacts_holo_dark);
-                mOpenDetailsOrAddContactImage.setOnClickListener(mOpenDetailsClickHandler);
+                configureHeaderClickActions(false);
             } else {
-                mOpenDetailsOrAddContactImage.setImageResource(R.drawable.ic_add_contact_holo_dark);
-                mOpenDetailsOrAddContactImage.setOnClickListener(mAddToContactsClickHandler);
+                configureHeaderClickActions(true);
             }
         } else {
-            mOpenDetailsOrAddContactImage.setImageResource(R.drawable.ic_contacts_holo_dark);
-            mOpenDetailsOrAddContactImage.setOnClickListener(mOpenDetailsClickHandler);
+            configureHeaderClickActions(false);
             mStarImage.setVisibility(View.VISIBLE);
             mStarImage.setOnClickListener(new OnClickListener() {
                 @Override
@@ -545,6 +542,24 @@
     }
 
     /**
+     * Bind the correct image resource and click handlers to the header views
+     *
+     * @param canAdd Whether or not the user can directly add information in this quick contact
+     * to their local contacts
+     */
+    private void configureHeaderClickActions(boolean canAdd) {
+        if (canAdd) {
+            mOpenDetailsOrAddContactImage.setImageResource(R.drawable.ic_add_contact_holo_dark);
+            mOpenDetailsOrAddContactImage.setOnClickListener(mAddToContactsClickHandler);
+            mPhotoView.setOnClickListener(mAddToContactsClickHandler);
+        } else {
+            mOpenDetailsOrAddContactImage.setImageResource(R.drawable.ic_contacts_holo_dark);
+            mOpenDetailsOrAddContactImage.setOnClickListener(mOpenDetailsClickHandler);
+            mPhotoView.setOnClickListener(mOpenDetailsClickHandler);
+        }
+    }
+
+    /**
      * Inflate the in-track view for the action of the given MIME-type, collapsing duplicate values.
      * Will use the icon provided by the {@link DataKind}.
      */
