Support QuickContacts For Extended Directories
Change-Id: I00128b882be3124e31cd2de6a974ec2d507344b1
diff --git a/src/com/android/contacts/common/list/PhoneNumberListAdapter.java b/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
index 2af055e..e347e36 100644
--- a/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
+++ b/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
@@ -37,6 +37,7 @@
import com.android.contacts.common.R;
import com.android.contacts.common.extensions.ExtendedPhoneDirectoriesManager;
import com.android.contacts.common.extensions.ExtensionsFactory;
+import com.android.contacts.common.util.Constants;
import java.util.ArrayList;
import java.util.List;
@@ -496,4 +497,21 @@
}
}
}
+
+ protected Uri getContactUri(int partitionIndex, Cursor cursor,
+ int contactIdColumn, int lookUpKeyColumn) {
+ final DirectoryPartition directory = (DirectoryPartition) getPartition(partitionIndex);
+ final long directoryId = directory.getDirectoryId();
+ if (!isExtendedDirectory(directoryId)) {
+ return super.getContactUri(partitionIndex, cursor, contactIdColumn, lookUpKeyColumn);
+ }
+
+ return Contacts.CONTENT_LOOKUP_URI.buildUpon()
+ .appendPath(Constants.LOOKUP_URI_ENCODED)
+ .appendQueryParameter(Constants.LOOKUP_URI_JSON, cursor.getString(lookUpKeyColumn))
+ .appendQueryParameter(Directory.DISPLAY_NAME, directory.getLabel())
+ .appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY,
+ String.valueOf(directoryId))
+ .build();
+ }
}
diff --git a/src/com/android/contacts/common/util/Constants.java b/src/com/android/contacts/common/util/Constants.java
index 46ddbae..5d6bbac 100644
--- a/src/com/android/contacts/common/util/Constants.java
+++ b/src/com/android/contacts/common/util/Constants.java
@@ -24,4 +24,7 @@
*/
public static final String PERFORMANCE_TAG = "ContactsPerf";
+ // Used for lookup URI that contains an encoded JSON string.
+ public static final String LOOKUP_URI_ENCODED = "encoded";
+ public static final String LOOKUP_URI_JSON = "json";
}