Don't show star icon in QC for uri-encoded contact

Also don't show empty directory name/type in contact details card

Bug: 10600250
Change-Id: Ifa7cdd3f9f943f4beed3b9cb26f5bb3300577eea
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();