summaryrefslogtreecommitdiffstats
path: root/src/com/android/messaging/util
diff options
context:
space:
mode:
authorTony Mak <tonymak@google.com>2016-05-11 17:12:20 +0100
committerVictor Chang <vichang@google.com>2016-05-16 16:34:24 +0100
commitb7fc988f231394077c08b5ede4d1a7310da57406 (patch)
tree6ab54a12966ade3ff6294342f07c3c0bd3ed5c05 /src/com/android/messaging/util
parent0a85b81c9f15f72e7284a8ff40f1ba73d7469b58 (diff)
downloadpackages_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.java74
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();
+ }
}