Loading src/com/android/dialer/CallDetailActivity.java +3 −1 Original line number Diff line number Diff line Loading @@ -55,6 +55,8 @@ import com.android.contacts.common.ContactPhotoManager; import com.android.contacts.common.CallUtil; import com.android.contacts.common.ClipboardUtils; import com.android.contacts.common.GeoUtil; import com.android.contacts.common.util.Constants; import com.android.contacts.common.util.UriUtils; import com.android.dialer.BackScrollManager.ScrollableHeader; import com.android.dialer.calllog.CallDetailHistoryAdapter; import com.android.dialer.calllog.CallTypeHelper; Loading Loading @@ -450,7 +452,7 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware nameOrNumber = firstDetails.number; } if (contactUri != null) { if (contactUri != null && !UriUtils.isEncodedContactUri(contactUri)) { mainActionIntent = new Intent(Intent.ACTION_VIEW, contactUri); // This will launch People's detail contact screen, so we probably want to // treat it as a separate People task. Loading src/com/android/dialer/calllog/ContactInfoHelper.java +42 −0 Original line number Diff line number Diff line Loading @@ -19,15 +19,25 @@ package com.android.dialer.calllog; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Directory; import android.provider.ContactsContract.DisplayNameSources; import android.provider.ContactsContract.PhoneLookup; import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import android.util.Log; import com.android.contacts.common.util.Constants; import com.android.contacts.common.util.UriUtils; import com.android.dialer.service.CachedNumberLookupService; import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo; import com.android.dialerbind.ServiceFactory; import org.json.JSONException; import org.json.JSONObject; /** * Utility class to look up the contact information for a given number. */ Loading Loading @@ -92,6 +102,7 @@ public class ContactInfoHelper { updatedInfo = new ContactInfo(); updatedInfo.number = number; updatedInfo.formattedNumber = formatPhoneNumber(number, null, countryIso); updatedInfo.lookupUri = createTemporaryContactUri(number); } else { updatedInfo = info; } Loading @@ -99,6 +110,37 @@ public class ContactInfoHelper { return updatedInfo; } /** * Creates a JSON-encoded lookup uri for a unknown number without an associated contact * * @param number - Unknown phone number * @return JSON-encoded URI that can be used to perform a lookup when clicking * on the quick contact card. */ private static Uri createTemporaryContactUri(String number) { try { final JSONObject contactRows = new JSONObject() .put(Phone.CONTENT_ITEM_TYPE, new JSONObject() .put(Phone.NUMBER, number) .put(Phone.TYPE, Phone.TYPE_CUSTOM)); final String jsonString = new JSONObject() .put(Contacts.DISPLAY_NAME, number) .put(Contacts.DISPLAY_NAME_SOURCE, DisplayNameSources.PHONE) .put(Contacts.CONTENT_ITEM_TYPE, contactRows) .toString(); return Contacts.CONTENT_LOOKUP_URI.buildUpon() .appendPath(Constants.LOOKUP_URI_ENCODED) .appendQueryParameter(Constants.LOOKUP_URI_JSON, jsonString) .appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Long.MAX_VALUE)) .build(); } catch (JSONException e) { return null; } } /** * Looks up a contact using the given URI. * <p> Loading Loading
src/com/android/dialer/CallDetailActivity.java +3 −1 Original line number Diff line number Diff line Loading @@ -55,6 +55,8 @@ import com.android.contacts.common.ContactPhotoManager; import com.android.contacts.common.CallUtil; import com.android.contacts.common.ClipboardUtils; import com.android.contacts.common.GeoUtil; import com.android.contacts.common.util.Constants; import com.android.contacts.common.util.UriUtils; import com.android.dialer.BackScrollManager.ScrollableHeader; import com.android.dialer.calllog.CallDetailHistoryAdapter; import com.android.dialer.calllog.CallTypeHelper; Loading Loading @@ -450,7 +452,7 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware nameOrNumber = firstDetails.number; } if (contactUri != null) { if (contactUri != null && !UriUtils.isEncodedContactUri(contactUri)) { mainActionIntent = new Intent(Intent.ACTION_VIEW, contactUri); // This will launch People's detail contact screen, so we probably want to // treat it as a separate People task. Loading
src/com/android/dialer/calllog/ContactInfoHelper.java +42 −0 Original line number Diff line number Diff line Loading @@ -19,15 +19,25 @@ package com.android.dialer.calllog; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Directory; import android.provider.ContactsContract.DisplayNameSources; import android.provider.ContactsContract.PhoneLookup; import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import android.util.Log; import com.android.contacts.common.util.Constants; import com.android.contacts.common.util.UriUtils; import com.android.dialer.service.CachedNumberLookupService; import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo; import com.android.dialerbind.ServiceFactory; import org.json.JSONException; import org.json.JSONObject; /** * Utility class to look up the contact information for a given number. */ Loading Loading @@ -92,6 +102,7 @@ public class ContactInfoHelper { updatedInfo = new ContactInfo(); updatedInfo.number = number; updatedInfo.formattedNumber = formatPhoneNumber(number, null, countryIso); updatedInfo.lookupUri = createTemporaryContactUri(number); } else { updatedInfo = info; } Loading @@ -99,6 +110,37 @@ public class ContactInfoHelper { return updatedInfo; } /** * Creates a JSON-encoded lookup uri for a unknown number without an associated contact * * @param number - Unknown phone number * @return JSON-encoded URI that can be used to perform a lookup when clicking * on the quick contact card. */ private static Uri createTemporaryContactUri(String number) { try { final JSONObject contactRows = new JSONObject() .put(Phone.CONTENT_ITEM_TYPE, new JSONObject() .put(Phone.NUMBER, number) .put(Phone.TYPE, Phone.TYPE_CUSTOM)); final String jsonString = new JSONObject() .put(Contacts.DISPLAY_NAME, number) .put(Contacts.DISPLAY_NAME_SOURCE, DisplayNameSources.PHONE) .put(Contacts.CONTENT_ITEM_TYPE, contactRows) .toString(); return Contacts.CONTENT_LOOKUP_URI.buildUpon() .appendPath(Constants.LOOKUP_URI_ENCODED) .appendQueryParameter(Constants.LOOKUP_URI_JSON, jsonString) .appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Long.MAX_VALUE)) .build(); } catch (JSONException e) { return null; } } /** * Looks up a contact using the given URI. * <p> Loading