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
This commit is contained in:
@@ -273,6 +273,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
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user