From 1c41a0aa8773add900db6dfd09edc38cb08d3b43 Mon Sep 17 00:00:00 2001 From: calderwoodra Date: Fri, 16 Mar 2018 12:06:07 -0700 Subject: Work contacts quick contact badge no longer crashes. Apperently contact ids are invalid for work contacts, so the URI needs to exclude them. Bug: 72755010 Test: manual PiperOrigin-RevId: 189374262 Change-Id: Ibeaa555dc035e14ea67905c342369188ecfd1832 --- .../directories/DirectoryContactViewHolder.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'java/com/android/dialer/searchfragment') diff --git a/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java b/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java index f6cdc4fc6..6e0a05a77 100644 --- a/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java +++ b/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java @@ -130,9 +130,19 @@ public final class DirectoryContactViewHolder extends RecyclerView.ViewHolder } private static Uri getContactUri(SearchCursor cursor) { - long contactId = cursor.getLong(Projections.ID); String lookupKey = cursor.getString(Projections.LOOKUP_KEY); - return Contacts.getLookupUri(contactId, lookupKey) + + Uri baseUri; + // If the contact is a local work contact, leave the contact id out of the uri since it + // isn't valid. + if (DirectoryCompat.isOnlyEnterpriseDirectoryId(cursor.getDirectoryId())) { + baseUri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey); + } else { + long contactId = cursor.getLong(Projections.ID); + baseUri = Contacts.getLookupUri(contactId, lookupKey); + } + + return baseUri .buildUpon() .appendQueryParameter( ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(cursor.getDirectoryId())) -- cgit v1.2.3