From 3dc68df0b856eace41aaca6bd0266da023c18835 Mon Sep 17 00:00:00 2001 From: Tony Mak Date: Fri, 11 Mar 2016 15:06:14 +0000 Subject: Query lookup uri with work lookup key directly is not allowed Query lookup uri with work lookup key directly is not allowed, app crashes if doing so. And actually, all APIs do not support work lookup key except those explicitly say it does. This Cls changed two places: 1. Do not pass lookup uri with work lookup to NotificationManager to avoid NotificationManager using the uri to query. 2. Dialer perform query for alternative display name using lookup key. But if it is a work contact, do not do so. Bug: 27146678 Change-Id: Ie59c37ff43b6f953a96564c446d79d8812f5ada1 --- src/com/android/dialer/calllog/ContactInfoHelper.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java index a9c7651d9..ff7a3f6a5 100644 --- a/src/com/android/dialer/calllog/ContactInfoHelper.java +++ b/src/com/android/dialer/calllog/ContactInfoHelper.java @@ -31,6 +31,7 @@ import android.text.TextUtils; import android.util.Log; import com.android.contacts.common.ContactsUtils; +import com.android.contacts.common.ContactsUtils.UserType; import com.android.contacts.common.util.Constants; import com.android.contacts.common.util.PermissionsUtil; import com.android.contacts.common.util.PhoneNumberHelper; @@ -181,7 +182,8 @@ public class ContactInfoHelper { } String lookupKey = phoneLookupCursor.getString(PhoneQuery.LOOKUP_KEY); ContactInfo contactInfo = createPhoneLookupContactInfo(phoneLookupCursor, lookupKey); - contactInfo.nameAlternative = lookUpDisplayNameAlternative(mContext, lookupKey); + contactInfo.nameAlternative = lookUpDisplayNameAlternative(mContext, lookupKey, + contactInfo.userType); return contactInfo; } finally { phoneLookupCursor.close(); @@ -207,13 +209,13 @@ public class ContactInfoHelper { return info; } - public static String lookUpDisplayNameAlternative(Context context, String lookupKey) { - if (lookupKey == null) { + public static String lookUpDisplayNameAlternative(Context context, String lookupKey, + @UserType long userType) { + // Query {@link Contacts#CONTENT_LOOKUP_URI} directly with work lookup key is not allowed. + if (lookupKey == null || userType == ContactsUtils.USER_TYPE_WORK) { return null; } - final Uri uri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey); - Cursor cursor = null; try { cursor = context.getContentResolver().query(uri, @@ -222,9 +224,6 @@ public class ContactInfoHelper { if (cursor != null && cursor.moveToFirst()) { return cursor.getString(PhoneQuery.NAME_ALTERNATIVE); } - } catch (IllegalArgumentException e) { - // Thrown for work profile queries. For those, we don't support - // alternative display names. } finally { if (cursor != null) { cursor.close(); -- cgit v1.2.3