Make Dialer app handles work directory correctly in Search bar
BUG=25899500
Change-Id: I5d6d9b6af72166c10d7658eb81ebbabbf26fac21
diff --git a/src/com/android/contacts/common/ContactsUtils.java b/src/com/android/contacts/common/ContactsUtils.java
index a6e0e0e..2ef68d4 100644
--- a/src/com/android/contacts/common/ContactsUtils.java
+++ b/src/com/android/contacts/common/ContactsUtils.java
@@ -20,6 +20,7 @@
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
+import android.os.Build;
import android.provider.ContactsContract.CommonDataKinds.Im;
import android.provider.ContactsContract.DisplayPhoto;
import android.telephony.PhoneNumberUtils;
@@ -45,6 +46,11 @@
private static int sThumbnailSize = -1;
+ public static final boolean FLAG_N_FEATURE =
+ false // Enforce Pre-N behavior in release build
+ && (Build.VERSION.SDK_INT > Build.VERSION_CODES.M
+ || Build.VERSION.CODENAME.startsWith("N"));
+
// TODO find a proper place for the canonical version of these
public interface ProviderNames {
String YAHOO = "Yahoo";
diff --git a/src/com/android/contacts/common/list/DirectoryListLoader.java b/src/com/android/contacts/common/list/DirectoryListLoader.java
index b327361..3e5868e 100644
--- a/src/com/android/contacts/common/list/DirectoryListLoader.java
+++ b/src/com/android/contacts/common/list/DirectoryListLoader.java
@@ -23,10 +23,12 @@
import android.database.MatrixCursor;
import android.net.Uri;
import android.os.Handler;
+import android.provider.ContactsContract;
import android.provider.ContactsContract.Directory;
import android.text.TextUtils;
import android.util.Log;
+import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.R;
/**
@@ -42,7 +44,10 @@
public static final int SEARCH_MODE_DATA_SHORTCUT = 3;
private static final class DirectoryQuery {
- public static final Uri URI = Directory.CONTENT_URI;
+ // TODO(b/26056939): Directory.ENTERPRISE_CONTENT_URI;
+ public static final Uri URI = ContactsUtils.FLAG_N_FEATURE
+ ? Uri.withAppendedPath(ContactsContract.AUTHORITY_URI, "directories_enterprise")
+ : Directory.CONTENT_URI;
public static final String ORDER_BY = Directory._ID;
public static final String[] PROJECTION = {
@@ -101,7 +106,7 @@
@Override
protected void onStartLoading() {
getContext().getContentResolver().
- registerContentObserver(Directory.CONTENT_URI, false, mObserver);
+ registerContentObserver(DirectoryQuery.URI, false, mObserver);
forceLoad();
}
diff --git a/src/com/android/contacts/common/list/PhoneNumberListAdapter.java b/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
index fee0a6a..45470d1 100644
--- a/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
+++ b/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
@@ -28,15 +28,15 @@
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.Directory;
-import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
+import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.GeoUtil;
import com.android.contacts.common.R;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.extensions.ExtendedPhoneDirectoriesManager;
import com.android.contacts.common.extensions.ExtensionsFactory;
import com.android.contacts.common.preference.ContactsPreferences;
@@ -175,9 +175,19 @@
if (isSearchMode()) {
final Uri baseUri;
if (isRemoteDirectoryQuery) {
- baseUri = Phone.CONTENT_FILTER_URI;
+ if (ContactsUtils.FLAG_N_FEATURE) {
+ //TODO(b/26056939): Phone.ENTERPRISE_CONTENT_FILTER_URI
+ baseUri = Uri.withAppendedPath(Phone.CONTENT_URI, "filter_enterprise");
+ } else {
+ baseUri = Phone.CONTENT_FILTER_URI;
+ }
} else if (mUseCallableUri) {
- baseUri = Callable.CONTENT_FILTER_URI;
+ if (ContactsUtils.FLAG_N_FEATURE) {
+ //TODO(b/26056939): Callable.ENTERPRISE_CONTENT_FILTER_URI
+ baseUri = Uri.withAppendedPath(Callable.CONTENT_URI, "filter_enterprise");
+ } else {
+ baseUri = Callable.CONTENT_FILTER_URI;
+ }
} else {
baseUri = Phone.CONTENT_FILTER_URI;
}
@@ -190,7 +200,16 @@
String.valueOf(getDirectoryResultLimit(getDirectoryById(directoryId))));
}
} else {
- final Uri baseUri = mUseCallableUri ? Callable.CONTENT_URI : Phone.CONTENT_URI;
+ Uri baseUri = mUseCallableUri ? Callable.CONTENT_URI : Phone.CONTENT_URI;
+ if (ContactsUtils.FLAG_N_FEATURE) {
+ if (mUseCallableUri) {
+ //TODO(b/26056939): Callable.ENTERPRISE_CONTENT_FILTER_URI
+ baseUri = Uri.withAppendedPath(Callable.CONTENT_URI, "filter_enterprise");
+ } else {
+ //TODO(b/26056939): Phone.ENTERPRISE_CONTENT_FILTER_URI
+ baseUri = Uri.withAppendedPath(Phone.CONTENT_URI, "filter_enterprise");
+ }
+ }
builder = baseUri.buildUpon().appendQueryParameter(
ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT));
if (isSectionHeaderDisplayEnabled()) {
@@ -556,6 +575,7 @@
}
}
+ @Override
protected Uri getContactUri(int partitionIndex, Cursor cursor,
int contactIdColumn, int lookUpKeyColumn) {
final DirectoryPartition directory = (DirectoryPartition) getPartition(partitionIndex);