diff options
author | Tony Mak <tonymak@google.com> | 2016-05-11 17:12:20 +0100 |
---|---|---|
committer | Victor Chang <vichang@google.com> | 2016-05-16 16:34:24 +0100 |
commit | b7fc988f231394077c08b5ede4d1a7310da57406 (patch) | |
tree | 6ab54a12966ade3ff6294342f07c3c0bd3ed5c05 /src/com/android/messaging/util | |
parent | 0a85b81c9f15f72e7284a8ff40f1ba73d7469b58 (diff) | |
download | packages_apps_Messaging-b7fc988f231394077c08b5ede4d1a7310da57406.tar.gz packages_apps_Messaging-b7fc988f231394077c08b5ede4d1a7310da57406.tar.bz2 packages_apps_Messaging-b7fc988f231394077c08b5ede4d1a7310da57406.zip |
Search enterprise directory as well in SMS app
TODO: Update the UI to show enterprise result separately (b/26021888)
Bug: 28016344, 25977180
(cherry picked from commit 5c621e57256f5068a43f1456f9bab1194f0d27b2)
Change-Id: I7130ae5e057ed750a29f64c5497a04b868613579
Diffstat (limited to 'src/com/android/messaging/util')
-rw-r--r-- | src/com/android/messaging/util/ContactUtil.java | 74 |
1 files changed, 58 insertions, 16 deletions
diff --git a/src/com/android/messaging/util/ContactUtil.java b/src/com/android/messaging/util/ContactUtil.java index 8555889..41a1704 100644 --- a/src/com/android/messaging/util/ContactUtil.java +++ b/src/com/android/messaging/util/ContactUtil.java @@ -274,6 +274,18 @@ public class ContactUtil { } /** + * Get a list of destinations (phone, email) matching the partial destination in work profile. + */ + public static CursorQueryData filterDestinationEnterprise(final Context context, + final String destination) { + if (shouldFilterForEmail(destination)) { + return ContactUtil.filterEmailsEnterprise(context, destination); + } else { + return ContactUtil.filterPhonesEnterprise(context, destination); + } + } + + /** * Get a list of phones matching a search criteria. The search may be on contact name or * phone number. In case search is on contact name, all matching contact's phone number * will be returned. @@ -282,19 +294,29 @@ public class ContactUtil { */ @VisibleForTesting public static CursorQueryData filterPhones(final Context context, final String query) { + return filterPhonesInternal(context, Phone.CONTENT_FILTER_URI, query, Directory.DEFAULT); + } + + /** + * Similar to {@link #filterPhones(Context, String)}, but search in work profile instead. + */ + public static CursorQueryData filterPhonesEnterprise(final Context context, + final String query) { + return filterPhonesInternal(context, Phone.ENTERPRISE_CONTENT_FILTER_URI, query, + Directory.ENTERPRISE_DEFAULT); + } + + private static CursorQueryData filterPhonesInternal(final Context context, + final Uri phoneFilterBaseUri, final String query, final long directoryId) { if (!ContactUtil.hasReadContactsPermission()) { return CursorQueryData.getEmptyQueryData(); } - - final Uri uri = Phone.CONTENT_FILTER_URI.buildUpon() - .appendPath(query).appendQueryParameter( - ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT)) - .build(); - - return new CursorQueryData(context, uri, PhoneQuery.PROJECTION, null, null, + Uri phoneFilterUri = buildDirectorySearchUri(phoneFilterBaseUri, query, directoryId); + return new CursorQueryData(context, + phoneFilterUri, + PhoneQuery.PROJECTION, null, null, PhoneQuery.SORT_KEY); } - /** * Lookup a phone based on a phone number. Supplied phone should be a relatively complete * phone number for this to succeed. PhoneLookup URI will apply some smartness to do a @@ -336,17 +358,29 @@ public class ContactUtil { */ @VisibleForTesting public static CursorQueryData filterEmails(final Context context, final String query) { + return filterEmailsInternal(context, Email.CONTENT_FILTER_URI, query, Directory.DEFAULT); + } + + /** + * Similar to {@link #filterEmails(Context, String)}, but search in work profile instead. + */ + public static CursorQueryData filterEmailsEnterprise(final Context context, + final String query) { + return filterEmailsInternal(context, Email.ENTERPRISE_CONTENT_FILTER_URI, query, + Directory.ENTERPRISE_DEFAULT); + } + + private static CursorQueryData filterEmailsInternal(final Context context, + final Uri filterEmailsBaseUri, final String query, final long directoryId) { if (!ContactUtil.hasReadContactsPermission()) { return CursorQueryData.getEmptyQueryData(); } - - final Uri uri = Email.CONTENT_FILTER_URI.buildUpon() - .appendPath(query).appendQueryParameter( - ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT)) - .build(); - - return new CursorQueryData(context, uri, EmailQuery.PROJECTION, null, null, - EmailQuery.SORT_KEY); + final Uri filterEmailsUri = buildDirectorySearchUri(filterEmailsBaseUri, query, + directoryId); + return new CursorQueryData(context, + filterEmailsUri, + PhoneQuery.PROJECTION, null, null, + PhoneQuery.SORT_KEY); } /** @@ -522,4 +556,12 @@ public class ContactUtil { public static boolean hasReadContactsPermission() { return OsUtil.hasPermission(Manifest.permission.READ_CONTACTS); } + + private static Uri buildDirectorySearchUri(final Uri uri, final String query, + final long directoryId) { + return uri.buildUpon() + .appendPath(query).appendQueryParameter( + ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(directoryId)) + .build(); + } } |