summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2017-09-21 21:49:40 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-09-21 21:49:40 +0000
commit420f06954be754fb7855ebdae3e01b357086c8b3 (patch)
tree69c3405112ca9d2603ef690e4dd9de8c6b2dc756
parent49c2b9de22351c4e0a03866f56c0cc685397d5b5 (diff)
parent785ae7b94e5e9345cad8e1749f3fa85e998af08e (diff)
downloadDialer-oreo-m2-s1-release.tar.gz
Change-Id: I3f752b0c2806808e11f636538eac871e46c5c596
-rw-r--r--res/values/strings.xml2
-rw-r--r--src/com/android/car/dialer/ContactResultsAdapter.java12
-rw-r--r--src/com/android/car/dialer/ContactResultsFragment.java35
3 files changed, 27 insertions, 22 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 21ac1b59..d432c2f7 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -104,7 +104,7 @@
<string name="pound_letters"> </string>
<string name="search_title">Search contacts</string>
- <string name="search_hint">Enter the name of a contact</string>
+ <string name="search_hint">Search contacts</string>
<string name="type_home">Home</string>
<string name="type_work">Work</string>
<string name="type_mobile">Mobile</string>
diff --git a/src/com/android/car/dialer/ContactResultsAdapter.java b/src/com/android/car/dialer/ContactResultsAdapter.java
index 02ec4daf..d637f9d9 100644
--- a/src/com/android/car/dialer/ContactResultsAdapter.java
+++ b/src/com/android/car/dialer/ContactResultsAdapter.java
@@ -18,7 +18,7 @@ package com.android.car.dialer;
import android.database.Cursor;
import android.net.Uri;
-import android.provider.ContactsContract;
+import android.provider.ContactsContract.Contacts;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
@@ -53,12 +53,12 @@ public class ContactResultsAdapter extends RecyclerView.Adapter<ContactResultVie
mContacts.clear();
while (data.moveToNext()) {
- int idColIdx = data.getColumnIndex(ContactsContract.Contacts._ID);
- int lookupColIdx = data.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY);
- int nameColIdx = data.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
- int photoUriColIdx = data.getColumnIndex(ContactsContract.Contacts.PHOTO_URI);
+ int idColIdx = data.getColumnIndex(Contacts._ID);
+ int lookupColIdx = data.getColumnIndex(Contacts.LOOKUP_KEY);
+ int nameColIdx = data.getColumnIndex(Contacts.DISPLAY_NAME);
+ int photoUriColIdx = data.getColumnIndex(Contacts.PHOTO_URI);
- Uri lookupUri = ContactsContract.Contacts.getLookupUri(
+ Uri lookupUri = Contacts.getLookupUri(
data.getLong(idColIdx), data.getString(lookupColIdx));
mContacts.add(new ContactResultViewHolder.ContactDetails(
diff --git a/src/com/android/car/dialer/ContactResultsFragment.java b/src/com/android/car/dialer/ContactResultsFragment.java
index 9fefdfb0..062c8b24 100644
--- a/src/com/android/car/dialer/ContactResultsFragment.java
+++ b/src/com/android/car/dialer/ContactResultsFragment.java
@@ -22,7 +22,7 @@ import android.content.CursorLoader;
import android.content.Loader;
import android.database.Cursor;
import android.os.Bundle;
-import android.provider.ContactsContract;
+import android.provider.ContactsContract.Contacts;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
@@ -30,6 +30,7 @@ import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.net.Uri;
import com.android.car.view.PagedListView;
@@ -47,19 +48,12 @@ public class ContactResultsFragment extends Fragment implements
private static final String KEY_INITIAL_SEARCH_QUERY = "initial_search_query";
private static final String[] CONTACT_DETAILS_PROJECTION = {
- ContactsContract.Contacts._ID,
- ContactsContract.Contacts.LOOKUP_KEY,
- ContactsContract.Contacts.DISPLAY_NAME,
- ContactsContract.Contacts.PHOTO_URI
+ Contacts._ID,
+ Contacts.LOOKUP_KEY,
+ Contacts.DISPLAY_NAME,
+ Contacts.PHOTO_URI
};
- /**
- * A selection criteria to filter contacts based on the query given by {@link #mSearchQuery}.
- * That query is assumed to be the name of a contact.
- */
- private static final String CONTACT_SELECTION =
- ContactsContract.Contacts.DISPLAY_NAME + " LIKE ? ";
-
private final ContactResultsAdapter mAdapter = new ContactResultsAdapter();
private PagedListView mContactResultList;
private String mSearchQuery;
@@ -144,15 +138,26 @@ public class ContactResultsFragment extends Fragment implements
data.close();
}
+ /**
+ * Finds the contacts with any field that matches the search query. Typically, the search
+ * criteria appears to be matching the beginning of the value in that data field (name, phone
+ * number, etc.)
+ */
@Override
public Loader<Cursor> onCreateLoader(int loaderId, Bundle args) {
if (Log.isLoggable(TAG, Log.DEBUG)) {
Log.d(TAG, "onCreateLoader(); loaderId: " + loaderId + " with query: " + mSearchQuery);
}
- return new CursorLoader(getContext(), ContactsContract.Contacts.CONTENT_URI,
- CONTACT_DETAILS_PROJECTION, CONTACT_SELECTION,
- new String[] { "%" + mSearchQuery + "%" }, null);
+ /* To lookup against all fields, just append the search query to the content filter uri
+ * and perform a lookup without any selection
+ */
+ Uri lookupUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+ Uri.encode(mSearchQuery));
+
+ return new CursorLoader(getContext(), lookupUri,
+ CONTACT_DETAILS_PROJECTION, null /* selection */,
+ null /* selectionArgs */, null /* sortOrder */);
}
@Override