AI 143308: am: CL 143159 am: CL 142855 Fix SHOW_OR_CREATE intent to correctly handle duplicate E-mail or IM entries for a person.
  Added a new WITH_EMAIL_OR_IM_FILTER_URI to find people with a given string as either an E-mail or IM address.  This cleans up the original code, and lets us handle duplicates when there are multiple ContactMethod matches for a single person.  (We don't get GROUP BY through the ContentProvider interface.)
  In ContactsListActivity we don't show possibly-incorrect labels when in MODE_QUERY_PICK_TO_VIEW, as any labels and values would be identical.  (The people appearing in that list are there because their ContactMethod matches the query.)
  Original author: jsharkey
  Merged from: //branches/cupcake/...
  Original author: android-build
  Merged from: //branches/donutburger/...

Automated import of CL 143308
diff --git a/src/com/android/contacts/ShowOrCreateActivity.java b/src/com/android/contacts/ShowOrCreateActivity.java
index 8d3cf0b..0732ffe 100755
--- a/src/com/android/contacts/ShowOrCreateActivity.java
+++ b/src/com/android/contacts/ShowOrCreateActivity.java
@@ -56,20 +56,17 @@
     static final boolean LOGD = false;
 
     static final String[] PHONES_PROJECTION = new String[] {
-        Phones._ID,
         Phones.PERSON_ID,
     };
 
-    static final String[] CONTACT_METHODS_PROJECTION = new String[] {
-        ContactMethods._ID,
-        ContactMethods.PERSON_ID,
+    static final String[] PEOPLE_PROJECTION = new String[] {
+        People._ID,
     };
     
     static final String SCHEME_MAILTO = "mailto";
     static final String SCHEME_TEL = "tel";
     
-    static final int ID_INDEX = 0;
-    static final int PERSON_ID_INDEX = 1;
+    static final int PERSON_ID_INDEX = 0;
 
     /**
      * Query clause to filter {@link ContactMethods#CONTENT_URI} to only search
@@ -126,11 +123,9 @@
         // Handle specific query request
         if (SCHEME_MAILTO.equals(scheme)) {
             createExtras.putString(Intents.Insert.EMAIL, ssp);
-            mQueryHandler.startQuery(QUERY_TOKEN, null,
-                    ContactMethods.CONTENT_URI, CONTACT_METHODS_PROJECTION,
-                    QUERY_KIND_EMAIL_OR_IM + " AND " + ContactMethods.DATA + "=?",
-                    new String[] { ssp }, null);
-            
+            Uri uri = Uri.withAppendedPath(People.WITH_EMAIL_OR_IM_FILTER_URI, Uri.encode(ssp));
+            mQueryHandler.startQuery(QUERY_TOKEN, null, uri,
+                    PEOPLE_PROJECTION, null, null, null);
         } else if (SCHEME_TEL.equals(scheme)) {
             createExtras.putString(Intents.Insert.PHONE, ssp);
             mQueryHandler.startQuery(QUERY_TOKEN, null,