People.PRESENCE_STATUS, // 8
SORT_STRING, // 9
};
+
+ static final String[] SIMPLE_CONTACTS_PROJECTION = new String[] {
+ People._ID, // 0
+ NAME_COLUMN, // 1
+ };
static final String[] STREQUENT_PROJECTION = new String[] {
People._ID, // 0
static final int SORT_STRING_INDEX = 9;
static final int PHONES_PERSON_ID_INDEX = 6;
- static final int CONTACT_METHODS_PERSON_ID_INDEX = 6;
+ static final int SIMPLE_CONTACTS_PERSON_ID_INDEX = 0;
static final int DISPLAY_GROUP_INDEX_ALL_CONTACTS = 0;
static final int DISPLAY_GROUP_INDEX_ALL_CONTACTS_WITH_PHONES = 1;
case MODE_QUERY_PICK_TO_VIEW: {
if (mQueryMode == QUERY_MODE_MAILTO) {
- mQueryPersonIdIndex = CONTACT_METHODS_PERSON_ID_INDEX;
+ // Find all contacts with the given search string as either
+ // an E-mail or IM address.
+ mQueryPersonIdIndex = SIMPLE_CONTACTS_PERSON_ID_INDEX;
+ Uri uri = Uri.withAppendedPath(People.WITH_EMAIL_OR_IM_FILTER_URI,
+ Uri.encode(mQueryData));
mQueryHandler.startQuery(QUERY_TOKEN, null,
- ContactMethods.CONTENT_URI, CONTACT_METHODS_PROJECTION,
- QUERY_KIND_EMAIL_OR_IM + " AND " + ContactMethods.DATA + "=?",
- new String[] { mQueryData },
- getSortOrder(CONTACT_METHODS_PROJECTION));
+ uri, SIMPLE_CONTACTS_PROJECTION, null, null,
+ getSortOrder(CONTACTS_PROJECTION));
} else if (mQueryMode == QUERY_MODE_TEL) {
mQueryPersonIdIndex = PHONES_PERSON_ID_INDEX;
cache.nameView.setText(mUnknownNameText);
}
+ // Bail out early if using a specific SEARCH query mode, usually for
+ // matching a specific E-mail or phone number. Any contact details
+ // shown would be identical, and columns might not even be present
+ // in the returned cursor.
+ if (mQueryMode != QUERY_MODE_NONE) {
+ cache.numberView.setVisibility(View.GONE);
+ cache.labelView.setVisibility(View.GONE);
+ cache.presenceView.setVisibility(View.GONE);
+ return;
+ }
+
// Set the phone number
TextView numberView = cache.numberView;
TextView labelView = cache.labelView;
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
// 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,