diff --git a/src/com/android/contacts/detail/ContactDetailDisplayUtils.java b/src/com/android/contacts/detail/ContactDetailDisplayUtils.java
index 35eb7a0..e07ae4c 100644
--- a/src/com/android/contacts/detail/ContactDetailDisplayUtils.java
+++ b/src/com/android/contacts/detail/ContactDetailDisplayUtils.java
@@ -129,9 +129,14 @@
         if (contactData.isDirectoryEntry()) {
             String directoryDisplayName = contactData.getDirectoryDisplayName();
             String directoryType = contactData.getDirectoryType();
-            String displayName = !TextUtils.isEmpty(directoryDisplayName)
-                    ? directoryDisplayName
-                    : directoryType;
+            final String displayName;
+            if (!TextUtils.isEmpty(directoryDisplayName)) {
+                displayName = directoryDisplayName;
+            } else if (!TextUtils.isEmpty(directoryType)) {
+                displayName = directoryType;
+            } else {
+                return null;
+            }
             return context.getString(R.string.contact_directory_description, displayName);
         }
         return null;
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 0c4369c..1e91fb6 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -69,6 +69,7 @@
 import com.android.contacts.model.dataitem.EmailDataItem;
 import com.android.contacts.model.dataitem.ImDataItem;
 import com.android.contacts.common.util.Constants;
+import com.android.contacts.common.util.UriUtils;
 import com.android.contacts.util.DataStatus;
 import com.android.contacts.util.ImageViewDrawableSetter;
 import com.android.contacts.util.SchedulingUtils;
@@ -352,26 +353,34 @@
             mStarImage.setImageResource(R.drawable.ic_favorite_off_lt);
         }
         final Uri lookupUri = data.getLookupUri();
-        mStarImage.setOnClickListener(new OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                // Toggle "starred" state
-                // Make sure there is a contact
-                if (lookupUri != null) {
-                    // Changes the state of the image already before sending updates to the database
-                    if (isStarred) {
-                        mStarImage.setImageResource(R.drawable.ic_favorite_off_lt);
-                    } else {
-                        mStarImage.setImageResource(R.drawable.ic_favorite_on_lt);
-                    }
 
-                    // Now perform the real save
-                    final Intent intent = ContactSaveService.createSetStarredIntent(context,
-                            lookupUri, !isStarred);
-                    context.startService(intent);
+        // If this is a json encoded URI, there is no local contact to star
+        if (UriUtils.isEncodedContactUri(lookupUri)) {
+            mStarImage.setVisibility(View.GONE);
+        } else {
+            mStarImage.setVisibility(View.VISIBLE);
+            mStarImage.setOnClickListener(new OnClickListener() {
+                @Override
+                public void onClick(View view) {
+                    // Toggle "starred" state
+                    // Make sure there is a contact
+                    if (lookupUri != null) {
+                        // Changes the state of the image already before sending updates to the
+                        // database
+                        if (isStarred) {
+                            mStarImage.setImageResource(R.drawable.ic_favorite_off_lt);
+                        } else {
+                            mStarImage.setImageResource(R.drawable.ic_favorite_on_lt);
+                        }
+
+                        // Now perform the real save
+                        final Intent intent = ContactSaveService.createSetStarredIntent(context,
+                                lookupUri, !isStarred);
+                        context.startService(intent);
+                    }
                 }
-            }
-        });
+            });
+        }
 
         mDefaultsMap.clear();
 
