summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard MacGregor <rmacgregor@cyngn.com>2016-04-25 16:21:27 -0700
committerRichard MacGregor <rmacgregor@cyngn.com>2016-05-05 09:17:11 -0700
commit8a1a13a03b2d48e51d7b36e7592793422a791350 (patch)
tree3e5b56faafd990b6cbe394deb004757615b062eb
parent3c5601055bf5edd4609861d16c836405dff14b44 (diff)
downloadandroid_packages_apps_Dialer-8a1a13a03b2d48e51d7b36e7592793422a791350.tar.gz
android_packages_apps_Dialer-8a1a13a03b2d48e51d7b36e7592793422a791350.tar.bz2
android_packages_apps_Dialer-8a1a13a03b2d48e51d7b36e7592793422a791350.zip
Fix call log and contact lookup
Call log lookup was broken by InCallApi introduction. Contact custom number labels weren't synced to dialer database, causing the label to be shown as "custom" instead of the correct string during T9 dialpad search. Use InCallApi plugin name as label if available, becauase some plugins use the label column for strings that are too long to be considered a label. Ticket CD-460 Change-Id: I38bbbdbee23598e5d6ca6347ed77ae9c318a1c6b
-rw-r--r--src/com/android/dialer/CallDetailActivity.java15
-rw-r--r--src/com/android/dialer/calllog/CallLogAdapter.java26
-rw-r--r--src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java8
-rw-r--r--src/com/android/dialer/calllog/ContactInfo.java2
-rw-r--r--src/com/android/dialer/calllog/ContactInfoHelper.java49
-rw-r--r--src/com/android/dialer/callstats/CallStatsDetailActivity.java6
-rw-r--r--src/com/android/dialer/callstats/CallStatsDetails.java3
-rw-r--r--src/com/android/dialer/contactinfo/ContactInfoCache.java4
-rw-r--r--src/com/android/dialer/database/DialerDatabaseHelper.java32
-rw-r--r--src/com/android/dialer/dialpad/SmartDialCursorLoader.java1
-rw-r--r--src/com/android/dialer/list/DialerPhoneNumberListAdapter.java10
-rw-r--r--tests/src/com/android/dialer/calllog/CallLogAdapterTest.java3
-rw-r--r--tests/src/com/android/dialer/database/SmartDialPrefixTest.java6
13 files changed, 127 insertions, 38 deletions
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index d9e3088fa..0509fca6f 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -42,6 +42,7 @@ import android.widget.Toast;
import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.util.ContactDisplayUtils;
import com.android.contacts.common.GeoUtil;
import com.android.contacts.common.CallUtil;
import com.android.contacts.common.activity.fragment.BlockContactDialogFragment;
@@ -196,8 +197,18 @@ public class CallDetailActivity extends Activity
*/
private CharSequence getNumberTypeOrLocation(PhoneCallDetails details) {
if (!TextUtils.isEmpty(details.name)) {
- return Phone.getTypeLabel(mResources, details.numberType,
- details.numberLabel);
+ String callMethodName = null;
+ if (details.inCallComponentName != null) {
+ CallMethodInfo cmi = DialerDataSubscription.get(mContext)
+ .getPluginIfExists(details.inCallComponentName);
+ if (cmi != null) {
+ callMethodName = cmi.mName;
+ }
+ }
+
+ return ContactDisplayUtils.getLabelForCall(getApplicationContext(),
+ details.number.toString(), details.numberType,
+ details.numberLabel, callMethodName);
} else {
return details.geocode;
}
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index d9e2744b6..8fee28875 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -23,7 +23,6 @@ import android.content.SharedPreferences;
import android.content.res.Resources;
import android.database.Cursor;
import android.net.Uri;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.support.v7.widget.RecyclerView;
import android.os.Bundle;
import android.os.Trace;
@@ -46,6 +45,7 @@ import android.view.accessibility.AccessibilityEvent;
import com.android.contacts.common.CallUtil;
import com.android.contacts.common.ClipboardUtils;
+import com.android.contacts.common.util.ContactDisplayUtils;
import com.android.contacts.common.util.PermissionsUtil;
import com.android.dialer.DialtactsActivity;
import com.android.dialer.PhoneCallDetails;
@@ -58,6 +58,8 @@ import com.android.dialer.deeplink.DeepLinkRequest;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.PhoneNumberUtil;
import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
+import com.android.phone.common.incall.CallMethodInfo;
+import com.android.phone.common.incall.DialerDataSubscription;
import com.cyanogen.ambient.deeplink.DeepLink;
import com.cyanogen.ambient.incall.extension.OriginCodes;
@@ -502,7 +504,7 @@ public class CallLogAdapter extends GroupingListAdapter
c.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME),
c.getString(CallLogQuery.ACCOUNT_ID));
final String countryIso = c.getString(CallLogQuery.COUNTRY_ISO);
- final ContactInfo cachedContactInfo = mContactInfoHelper.getContactInfo(c);
+ final ContactInfo cachedContactInfo = mContactInfoHelper.getContactInfo(mContext, c);
final boolean isVoicemailNumber =
mTelecomCallLogCache.isVoicemailNumber(accountHandle, number);
@@ -558,8 +560,6 @@ public class CallLogAdapter extends GroupingListAdapter
// Stash away the Ids of the calls so that we can support deleting a row in the call log.
views.callIds = getCallIds(c, count);
views.isBusiness = mContactInfoHelper.isBusiness(info.sourceType);
- views.numberType = (String) Phone.getTypeLabel(mContext.getResources(), details.numberType,
- details.numberLabel);
String component = c.getString(CallLogQuery.PLUGIN_PACKAGE_NAME);
if (!TextUtils.isEmpty(component)) {
views.inCallComponentName = ComponentName.unflattenFromString(component);
@@ -577,7 +577,23 @@ public class CallLogAdapter extends GroupingListAdapter
views.phoneCallDetailsViews.noteIconView.setVisibility(View.GONE);
}
- views.mDeepLinkPresenter.prepareUi(number);
+ String callMethodName = null;
+ if (views.inCallComponentName != null) {
+ CallMethodInfo cmi = DialerDataSubscription.get(mContext)
+ .getPluginIfExists(views.inCallComponentName);
+ if (cmi != null) {
+ callMethodName = cmi.mName;
+ }
+ }
+
+ final String label = ContactDisplayUtils.getLabelForCall(mContext, number,
+ details.numberType, details.numberLabel, callMethodName);
+
+ views.numberType = label;
+ details.numberLabel = label;
+
+ views.mDeepLinkPresenter.prepareUi(number);
+
// Check if the day group has changed and display a header if necessary.
int currentGroup = getDayGroupForCall(views.rowId);
int previousGroup = getPreviousDayGroup(c);
diff --git a/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java b/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java
index 5b066c2a6..63f79be0b 100644
--- a/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java
+++ b/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java
@@ -30,6 +30,7 @@ import android.text.TextUtils;
import android.util.Log;
import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.util.PhoneNumberHelper;
import com.android.dialer.PhoneCallDetails;
import com.android.dialer.util.AsyncTaskExecutor;
import com.android.dialer.util.AsyncTaskExecutors;
@@ -156,6 +157,10 @@ public class CallLogAsyncTaskUtil {
cursor.getString(CallDetailQuery.ACCOUNT_COMPONENT_NAME),
cursor.getString(CallDetailQuery.ACCOUNT_ID));
+ final boolean isInCallPluginContactId =
+ ContactInfoHelper.isInCallPluginContactId(context, accountHandle, number,
+ countryIso, cursor.getString(CallDetailQuery.PLUGIN_PACKAGE_NAME));
+
// If this is not a regular number, there is no point in looking it up in the contacts.
ContactInfoHelper contactInfoHelper =
new ContactInfoHelper(context, GeoUtil.getCurrentCountryIso(context));
@@ -165,7 +170,8 @@ public class CallLogAsyncTaskUtil {
ContactInfo info = ContactInfo.EMPTY;
if (shouldLookupNumber) {
- ContactInfo lookupInfo = contactInfoHelper.lookupNumber(number, countryIso);
+ ContactInfo lookupInfo =
+ contactInfoHelper.lookupNumber(number, countryIso, isInCallPluginContactId);
info = lookupInfo != null ? lookupInfo : ContactInfo.EMPTY;
}
diff --git a/src/com/android/dialer/calllog/ContactInfo.java b/src/com/android/dialer/calllog/ContactInfo.java
index bbcf1b482..1f44c6f45 100644
--- a/src/com/android/dialer/calllog/ContactInfo.java
+++ b/src/com/android/dialer/calllog/ContactInfo.java
@@ -58,6 +58,8 @@ public class ContactInfo {
public String lookupProviderName;
public Drawable attributionDrawable;
+ public boolean isInCallPluginContactId;
+
public static ContactInfo EMPTY = new ContactInfo();
public int sourceType = 0;
diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java
index 0bfe92bca..3442df0af 100644
--- a/src/com/android/dialer/calllog/ContactInfoHelper.java
+++ b/src/com/android/dialer/calllog/ContactInfoHelper.java
@@ -25,6 +25,8 @@ import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.DisplayNameSources;
import android.provider.ContactsContract.PhoneLookup;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
import android.util.Log;
@@ -56,6 +58,14 @@ import org.json.JSONObject;
public class ContactInfoHelper {
private static final String TAG = ContactInfoHelper.class.getSimpleName();
+ /**
+ * If this boolean parameter is set to true, then the appended query is treated as a
+ * InCallApi plugin contact ID and the lookup will be performed against InCallApi contacts in
+ * the user's contacts.
+ */
+ // TODO: Move this to a more central place
+ private static final String QUERY_PARAMETER_INCALLAPI_ID = "incallapi_contactid";
+
private final Context mContext;
private final String mCurrentCountryIso;
private final LookupProvider mLookupProvider;
@@ -84,8 +94,10 @@ public class ContactInfoHelper {
*
* @param number the number to look up
* @param countryIso the country associated with this number
+ * @param isInCallPluginContactId true if number is an InCallApi plugin contact id
*/
- public ContactInfo lookupNumber(String number, String countryIso) {
+ public ContactInfo lookupNumber(String number, String countryIso,
+ boolean isInCallPluginContactId) {
if (TextUtils.isEmpty(number)) {
return null;
}
@@ -100,13 +112,14 @@ public class ContactInfoHelper {
// actually the phone number of a contact.
String username = PhoneNumberHelper.getUsernameFromUriNumber(number);
if (PhoneNumberUtils.isGlobalPhoneNumber(username)) {
- sipInfo = queryContactInfoForPhoneNumber(username, countryIso);
+ sipInfo = queryContactInfoForPhoneNumber(username, countryIso, false);
}
}
info = sipInfo;
} else {
// Look for a contact that has the given phone number.
- ContactInfo phoneInfo = queryContactInfoForPhoneNumber(number, countryIso);
+ ContactInfo phoneInfo =
+ queryContactInfoForPhoneNumber(number, countryIso, isInCallPluginContactId);
if (phoneInfo == null || phoneInfo == ContactInfo.EMPTY) {
// Check whether the phone number has been saved as an "Internet call" number.
@@ -264,7 +277,8 @@ public class ContactInfoHelper {
* <p>
* If the lookup fails for some other reason, it returns null.
*/
- private ContactInfo queryContactInfoForPhoneNumber(String number, String countryIso) {
+ private ContactInfo queryContactInfoForPhoneNumber(String number, String countryIso,
+ boolean isInCallPluginContactId) {
if (TextUtils.isEmpty(number)) {
return null;
}
@@ -280,9 +294,11 @@ public class ContactInfoHelper {
}
// The "contactNumber" is a regular phone number, so use the PhoneLookup table.
- Uri uri = Uri.withAppendedPath(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI,
- Uri.encode(contactNumber));
- ContactInfo info = lookupContactFromUri(uri);
+ Uri.Builder uriBuilder = PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI.buildUpon();
+ uriBuilder.appendPath(Uri.encode(contactNumber));
+ uriBuilder.appendQueryParameter(QUERY_PARAMETER_INCALLAPI_ID,
+ String.valueOf(isInCallPluginContactId));
+ ContactInfo info = lookupContactFromUri(uriBuilder.build());
boolean isLocalContact = info != null && info != ContactInfo.EMPTY;
if (info != null && info != ContactInfo.EMPTY) {
info.formattedNumber = formatPhoneNumber(number, null, countryIso);
@@ -467,7 +483,7 @@ public class ContactInfoHelper {
*
* @param c A cursor pointing to an entry in the call log.
*/
- public static ContactInfo getContactInfo(Cursor c) {
+ public static ContactInfo getContactInfo(Context context, Cursor c) {
ContactInfo info = new ContactInfo();
info.lookupUri = UriUtils.parseUriOrNull(c.getString(CallLogQuery.CACHED_LOOKUP_URI));
@@ -482,6 +498,15 @@ public class ContactInfoHelper {
UriUtils.parseUriOrNull(c.getString(CallLogQuery.CACHED_PHOTO_URI)));
info.formattedNumber = c.getString(CallLogQuery.CACHED_FORMATTED_NUMBER);
+ final String componentString = c.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
+ final String accountId = c.getString(CallLogQuery.ACCOUNT_ID);
+ final String countryIso = c.getString(CallLogQuery.COUNTRY_ISO);
+ info.isInCallPluginContactId = isInCallPluginContactId(context,
+ PhoneAccountUtils.getAccount(componentString, accountId),
+ info.number,
+ countryIso,
+ c.getString(CallLogQuery.PLUGIN_PACKAGE_NAME));
+
return info;
}
@@ -520,4 +545,12 @@ public class ContactInfoHelper {
field);
}
+ public static boolean isInCallPluginContactId(Context context,
+ PhoneAccountHandle accountHandle, String number, String countryIso, String pluginName) {
+ boolean isInCallPluginContactId = accountHandle == null &&
+ !PhoneNumberHelper.isValidNumber(context, number, countryIso) &&
+ !TextUtils.isEmpty(pluginName);
+
+ return isInCallPluginContactId;
+ }
}
diff --git a/src/com/android/dialer/callstats/CallStatsDetailActivity.java b/src/com/android/dialer/callstats/CallStatsDetailActivity.java
index 4d9c36c6c..1be6294b4 100644
--- a/src/com/android/dialer/callstats/CallStatsDetailActivity.java
+++ b/src/com/android/dialer/callstats/CallStatsDetailActivity.java
@@ -90,7 +90,8 @@ public class CallStatsDetailActivity extends Activity implements
private class UpdateContactTask extends AsyncTask<String, Void, ContactInfo> {
@Override
protected ContactInfo doInBackground(String... strings) {
- ContactInfo info = mContactInfoHelper.lookupNumber(strings[0], strings[1]);
+ ContactInfo info = mContactInfoHelper.lookupNumber(strings[0], strings[1],
+ Boolean.valueOf(strings[2]));
return info;
}
@@ -178,7 +179,8 @@ public class CallStatsDetailActivity extends Activity implements
@Override
public void onResume() {
super.onResume();
- new UpdateContactTask().execute(mData.number.toString(), mData.countryIso);
+ new UpdateContactTask().execute(mData.number.toString(), mData.countryIso,
+ String.valueOf(mData.isInCallPluginContactId));
}
@Override
diff --git a/src/com/android/dialer/callstats/CallStatsDetails.java b/src/com/android/dialer/callstats/CallStatsDetails.java
index c07209fb5..a5082b459 100644
--- a/src/com/android/dialer/callstats/CallStatsDetails.java
+++ b/src/com/android/dialer/callstats/CallStatsDetails.java
@@ -58,6 +58,8 @@ public class CallStatsDetails implements Parcelable {
public boolean isVoicemailNumber;
public String displayNumber;
+ public boolean isInCallPluginContactId;
+
public CallStatsDetails(CharSequence number, int numberPresentation,
PhoneAccountHandle accountHandle, ContactInfo info,
String countryIso, String geocode, long date) {
@@ -86,6 +88,7 @@ public class CallStatsDetails implements Parcelable {
this.photoId = info.photoId;
this.sourceType = info.sourceType;
this.displayNumber = null;
+ this.isInCallPluginContactId = info.isInCallPluginContactId;
}
public void updateDisplayPropertiesIfNeeded(Context context) {
diff --git a/src/com/android/dialer/contactinfo/ContactInfoCache.java b/src/com/android/dialer/contactinfo/ContactInfoCache.java
index 568f48886..b2f862335 100644
--- a/src/com/android/dialer/contactinfo/ContactInfoCache.java
+++ b/src/com/android/dialer/contactinfo/ContactInfoCache.java
@@ -20,6 +20,7 @@ import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
+import com.android.dialer.calllog.CallLogAsyncTaskUtil;
import com.android.dialer.calllog.ContactInfo;
import com.android.dialer.calllog.ContactInfoHelper;
import com.android.dialer.util.ExpirableCache;
@@ -190,7 +191,8 @@ public class ContactInfoCache {
* view to update its content.
*/
private boolean queryContactInfo(String number, String countryIso, ContactInfo callLogInfo) {
- final ContactInfo info = mContactInfoHelper.lookupNumber(number, countryIso);
+ final ContactInfo info = mContactInfoHelper.lookupNumber(number, countryIso,
+ callLogInfo.isInCallPluginContactId);
if (info == null) {
// The lookup failed, just return without requesting to update the view.
diff --git a/src/com/android/dialer/database/DialerDatabaseHelper.java b/src/com/android/dialer/database/DialerDatabaseHelper.java
index 400b2b2cf..35caf84c5 100644
--- a/src/com/android/dialer/database/DialerDatabaseHelper.java
+++ b/src/com/android/dialer/database/DialerDatabaseHelper.java
@@ -80,7 +80,7 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
* 0-98 KitKat
* </pre>
*/
- public static final int DATABASE_VERSION = 70006;
+ public static final int DATABASE_VERSION = 70007;
public static final String DATABASE_NAME = "dialer.db";
/**
@@ -121,6 +121,7 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
static final String LAST_SMARTDIAL_UPDATE_TIME = "last_smartdial_update_time";
static final String MIMETYPE = "mimetype";
static final String PHONE_TYPE = "phone_type";
+ static final String PHONE_LABEL = "phone_label";
}
public static interface PrefixColumns extends BaseColumns {
@@ -267,9 +268,10 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
public final long photoId;
public final String mimeType;
public final int phoneType;
+ public final String phoneLabel;
public ContactNumber(long id, long dataID, String displayName, String phoneNumber,
- String lookupKey, long photoId, String mimeType, int phoneType) {
+ String lookupKey, long photoId, String mimeType, int phoneType, String phoneLabel) {
this.dataId = dataID;
this.id = id;
this.displayName = displayName;
@@ -278,12 +280,13 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
this.photoId = photoId;
this.mimeType = mimeType;
this.phoneType = phoneType;
+ this.phoneLabel = phoneLabel;
}
@Override
public int hashCode() {
return Objects.hashCode(id, dataId, displayName, phoneNumber, lookupKey, photoId,
- mimeType, phoneType);
+ mimeType, phoneType, phoneLabel);
}
@Override
@@ -300,7 +303,8 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
&& Objects.equal(this.lookupKey, that.lookupKey)
&& Objects.equal(this.photoId, that.photoId)
&& Objects.equal(this.mimeType, that.mimeType)
- && Objects.equal(this.phoneType, that.phoneType);
+ && Objects.equal(this.phoneType, that.phoneType)
+ && Objects.equal(this.phoneLabel, that.phoneLabel);
}
return false;
@@ -427,7 +431,8 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
SmartDialDbColumns.IN_VISIBLE_GROUP + " INTEGER, " +
SmartDialDbColumns.IS_PRIMARY + " INTEGER, " +
SmartDialDbColumns.MIMETYPE + " TEXT, " +
- SmartDialDbColumns.PHONE_TYPE + " INTEGER" +
+ SmartDialDbColumns.PHONE_TYPE + " INTEGER, " +
+ SmartDialDbColumns.PHONE_LABEL + " Text" +
");");
db.execSQL("CREATE TABLE " + Tables.PREFIX_TABLE + " (" +
@@ -750,8 +755,9 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
SmartDialDbColumns.IS_PRIMARY + ", " +
SmartDialDbColumns.LAST_SMARTDIAL_UPDATE_TIME + ", " +
SmartDialDbColumns.MIMETYPE + ", " +
- SmartDialDbColumns.PHONE_TYPE + ") " +
- " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+ SmartDialDbColumns.PHONE_TYPE + ", " +
+ SmartDialDbColumns.PHONE_LABEL + ") " +
+ " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
final SQLiteStatement insert = db.compileStatement(sqlInsert);
final String numberSqlInsert = "INSERT INTO " + Tables.PREFIX_TABLE + " (" +
@@ -805,6 +811,11 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
updatedContactCursor.getString(PhoneQuery.PHONE_NUMBER_MIMETYPE);
insert.bindString(14, mimetype);
+ final String label = updatedContactCursor.getString(PhoneQuery.PHONE_LABEL);
+ if (label != null) {
+ insert.bindString(16, label);
+ }
+
insert.executeInsert();
final String contactPhoneNumber =
updatedContactCursor.getString(PhoneQuery.PHONE_NUMBER);
@@ -1114,7 +1125,8 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
SmartDialDbColumns.CONTACT_ID + ", " +
SmartDialDbColumns.LOOKUP_KEY + ", " +
SmartDialDbColumns.PHONE_TYPE + ", " +
- SmartDialDbColumns.MIMETYPE +
+ SmartDialDbColumns.MIMETYPE + ", " +
+ SmartDialDbColumns.PHONE_LABEL +
" FROM " + Tables.SMARTDIAL_TABLE +
" WHERE " + where.toString() +
" ORDER BY " + SmartDialSortingOrder.SORT_ORDER,
@@ -1136,6 +1148,7 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
final int columnLookupKey = 5;
final int columnPhoneType = 6;
final int columnMimetype = 7;
+ final int columnPhoneLabel = 8;
if (DEBUG) {
stopWatch.lap("Found column IDs");
@@ -1155,6 +1168,7 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
final String lookupKey = cursor.getString(columnLookupKey);
final int phoneType = cursor.getInt(columnPhoneType);
final String mimeType = cursor.getString(columnMimetype);
+ final String phoneLabel = cursor.getString(columnPhoneLabel);
/**
* If the contact has either the name or number OR a username
@@ -1167,7 +1181,7 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
if (nameMatches || numberMatches) {
/** If a contact has not been added, add it to the result and the hash set.*/
result.add(new ContactNumber(id, dataID, displayName, phoneNumber, lookupKey,
- photoId, mimeType, phoneType));
+ photoId, mimeType, phoneType, phoneLabel));
counter++;
if (DEBUG) {
stopWatch.lap("Added one result: Name: " + displayName);
diff --git a/src/com/android/dialer/dialpad/SmartDialCursorLoader.java b/src/com/android/dialer/dialpad/SmartDialCursorLoader.java
index 1cc56f1c3..a5ecfe5f6 100644
--- a/src/com/android/dialer/dialpad/SmartDialCursorLoader.java
+++ b/src/com/android/dialer/dialpad/SmartDialCursorLoader.java
@@ -116,6 +116,7 @@ public class SmartDialCursorLoader extends AsyncTaskLoader<Cursor> {
row[PhoneQuery.PHONE_NUMBER] = contact.phoneNumber;
row[PhoneQuery.PHONE_MIME_TYPE] = contact.mimeType;
row[PhoneQuery.PHONE_TYPE] = contact.phoneType;
+ row[PhoneQuery.PHONE_LABEL] = contact.phoneLabel;
cursor.addRow(row);
}
}
diff --git a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
index 53d95e351..6d2784e3b 100644
--- a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
+++ b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
@@ -202,17 +202,15 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter {
@Override
public String getLabelType(Cursor c, int type) {
if (type == ContactsContract.CommonDataKinds.Phone.TYPE_CUSTOM) {
- final String providerLabel = c.getString(PhoneNumberListAdapter.PhoneQuery.PHONE_MIME_TYPE);
- CallMethodInfo cmi = CallMethodFilters.getMethodForMimeType(providerLabel, false,
+ final String mimetype = c.getString(PhoneNumberListAdapter.PhoneQuery.PHONE_MIME_TYPE);
+ CallMethodInfo cmi = CallMethodFilters.getMethodForMimeType(mimetype, false,
DialerDataSubscription.get(getContext()));
+
if (cmi != null) {
return cmi.mName;
- } else {
- return null;
}
- } else {
- return null;
}
+ return null;
}
private void assignShortcutToView(ContactListItemView v, int shortcutType, int position) {
diff --git a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
index d3f7be33b..d3272b2e3 100644
--- a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
+++ b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
@@ -60,7 +60,8 @@ public class CallLogAdapterTest extends AndroidTestCase {
ContactInfoHelper fakeContactInfoHelper =
new ContactInfoHelper(getContext(), TEST_COUNTRY_ISO) {
@Override
- public ContactInfo lookupNumber(String number, String countryIso) {
+ public ContactInfo lookupNumber(String number, String countryIso,
+ boolean isInCallPluginContactId) {
ContactInfo info = new ContactInfo();
info.number = number;
info.formattedNumber = number;
diff --git a/tests/src/com/android/dialer/database/SmartDialPrefixTest.java b/tests/src/com/android/dialer/database/SmartDialPrefixTest.java
index 6c63889f4..53d219748 100644
--- a/tests/src/com/android/dialer/database/SmartDialPrefixTest.java
+++ b/tests/src/com/android/dialer/database/SmartDialPrefixTest.java
@@ -137,13 +137,13 @@ public class SmartDialPrefixTest extends AndroidTestCase {
private ContactNumber constructNewContactWithDummyIds(MatrixCursor contactCursor,
MatrixCursor nameCursor, String number, int id, String displayName) {
return constructNewContact(contactCursor, nameCursor, id, number, id, String.valueOf(id),
- displayName, 0, 0, 0, 0, 0, 0, 0, null, 0);
+ displayName, 0, 0, 0, 0, 0, 0, 0, null, 0, null);
}
private ContactNumber constructNewContact(MatrixCursor contactCursor, MatrixCursor nameCursor,
int id, String number, int contactId, String lookupKey, String displayName, int photoId,
int lastTimeUsed, int timesUsed, int starred, int isSuperPrimary, int inVisibleGroup,
- int isPrimary, String mimetype, int phoneType) {
+ int isPrimary, String mimetype, int phoneType, String phoneLabel) {
assertNotNull(contactCursor);
assertNotNull(nameCursor);
@@ -159,7 +159,7 @@ public class SmartDialPrefixTest extends AndroidTestCase {
nameCursor.addRow(new Object[]{displayName, contactId});
return new ContactNumber(contactId, id, displayName, number, lookupKey, 0, mimetype,
- phoneType);
+ phoneType, phoneLabel);
}
private ArrayList<ContactNumber> getLooseMatchesFromDb(String query) {