diff options
4 files changed, 28 insertions, 51 deletions
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java index 507a51af6..78c329a0e 100644 --- a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java +++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java @@ -39,6 +39,7 @@ class AnnotatedCallLogDatabaseHelper extends SQLiteOpenHelper { .append(AnnotatedCallLog._ID + " integer primary key, ") .append(AnnotatedCallLog.TIMESTAMP + " integer, ") .append(AnnotatedCallLog.NAME + " string, ") + .append(AnnotatedCallLog.FORMATTED_NUMBER + " string, ") .append(AnnotatedCallLog.NEW + " integer, ") .append(AnnotatedCallLog.TYPE + " integer, ") .append(AnnotatedCallLog.CONTACT_PHOTO_URI + " string, ") diff --git a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java index c669bdae5..be891c534 100644 --- a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java +++ b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java @@ -53,6 +53,13 @@ public class AnnotatedCallLogContract { String NAME = "name"; /** + * Copied from {@link android.provider.CallLog.Calls#CACHED_FORMATTED_NUMBER}. + * + * <p>Type: TEXT + */ + String FORMATTED_NUMBER = "formatted_number"; + + /** * Local photo URI for the contact associated with the phone number, if it exists. * * <p>Photos currently only come from local contacts database and not caller ID sources. If @@ -136,6 +143,7 @@ public class AnnotatedCallLogContract { _ID, TIMESTAMP, NAME, + FORMATTED_NUMBER, CONTACT_PHOTO_URI, NUMBER_TYPE_LABEL, IS_READ, @@ -213,14 +221,6 @@ public class AnnotatedCallLogContract { public static final String NUMBER_CALLS = "number_calls"; /** - * The phone number formatted in a way suitable for display to the user. This value is generated - * on the fly when the {@link CoalescedAnnotatedCallLog} is generated. - * - * <p>Type: TEXT - */ - public static final String FORMATTED_NUMBER = "formatted_number"; - - /** * The call types of the most recent 3 calls, encoded as a CallTypes proto. * * <p>TYPE: BLOB @@ -232,7 +232,7 @@ public class AnnotatedCallLogContract { * AnnotatedCallLog}. */ private static final String[] COLUMNS_ONLY_IN_COALESCED_CALL_LOG = - new String[] {NUMBER_CALLS, FORMATTED_NUMBER, CALL_TYPES}; + new String[] {NUMBER_CALLS, CALL_TYPES}; /** All columns in the {@link CoalescedAnnotatedCallLog}. */ public static final String[] ALL_COLUMNS = diff --git a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java index 7bf2972c5..e4af4170c 100644 --- a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java +++ b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java @@ -38,7 +38,6 @@ import android.telecom.PhoneAccountHandle; import android.text.TextUtils; import android.util.ArraySet; import com.android.dialer.CallTypes; -import com.android.dialer.DialerPhoneNumber; import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog; import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.CoalescedAnnotatedCallLog; import com.android.dialer.calllog.datasources.CallLogDataSource; @@ -52,7 +51,6 @@ import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil; import com.android.dialer.theme.R; import com.android.dialer.util.PermissionsUtil; import com.google.i18n.phonenumbers.PhoneNumberUtil; -import com.google.protobuf.InvalidProtocolBufferException; import java.util.Arrays; import java.util.List; import java.util.Set; @@ -160,18 +158,9 @@ public class SystemCallLogDataSource implements CallLogDataSource { .useMostRecentLong(AnnotatedCallLog.NEW) .useMostRecentString(AnnotatedCallLog.NUMBER_TYPE_LABEL) .useMostRecentString(AnnotatedCallLog.GEOCODED_LOCATION) + .useMostRecentString(AnnotatedCallLog.FORMATTED_NUMBER) .combine(); - // All phone numbers in the provided group should be equivalent (but could be formatted - // differently). Arbitrarily show the raw phone number of the most recent call. - DialerPhoneNumber mostRecentPhoneNumber = - getMostRecentPhoneNumber(individualRowsSortedByTimestampDesc); - if (mostRecentPhoneNumber != null) { - coalescedValues.put( - CoalescedAnnotatedCallLog.FORMATTED_NUMBER, - mostRecentPhoneNumber.getRawInput().getNumber()); - } - CallTypes.Builder callTypes = CallTypes.newBuilder(); // Store a maximum of 3 call types since that's all we show to users via icons. for (int i = 0; i < 3 && i < individualRowsSortedByTimestampDesc.size(); i++) { @@ -183,23 +172,6 @@ public class SystemCallLogDataSource implements CallLogDataSource { return coalescedValues; } - @Nullable - private static DialerPhoneNumber getMostRecentPhoneNumber( - List<ContentValues> individualRowsSortedByTimestampDesc) { - byte[] protoBytes = - individualRowsSortedByTimestampDesc.get(0).getAsByteArray(AnnotatedCallLog.NUMBER); - if (protoBytes == null) { - return null; - } - DialerPhoneNumber dialerPhoneNumber; - try { - dialerPhoneNumber = DialerPhoneNumber.parseFrom(protoBytes); - } catch (InvalidProtocolBufferException e) { - throw Assert.createAssertionFailException("couldn't parse DialerPhoneNumber", e); - } - return dialerPhoneNumber; - } - @TargetApi(Build.VERSION_CODES.M) // Uses try-with-resources private void handleInsertsAndUpdates( Context appContext, CallLogMutations mutations, Set<Long> existingAnnotatedCallLogIds) { @@ -223,6 +195,7 @@ public class SystemCallLogDataSource implements CallLogDataSource { Calls.NUMBER, Calls.TYPE, Calls.COUNTRY_ISO, + Calls.CACHED_FORMATTED_NUMBER, Calls.CACHED_NUMBER_TYPE, Calls.CACHED_NUMBER_LABEL, Calls.IS_READ, @@ -253,6 +226,8 @@ public class SystemCallLogDataSource implements CallLogDataSource { int numberColumn = cursor.getColumnIndexOrThrow(Calls.NUMBER); int typeColumn = cursor.getColumnIndexOrThrow(Calls.TYPE); int countryIsoColumn = cursor.getColumnIndexOrThrow(Calls.COUNTRY_ISO); + int cachedFormattedNumberColumn = + cursor.getColumnIndexOrThrow(Calls.CACHED_FORMATTED_NUMBER); int cachedNumberTypeColumn = cursor.getColumnIndexOrThrow(Calls.CACHED_NUMBER_TYPE); int cachedNumberLabelColumn = cursor.getColumnIndexOrThrow(Calls.CACHED_NUMBER_LABEL); int isReadColumn = cursor.getColumnIndexOrThrow(Calls.IS_READ); @@ -272,7 +247,7 @@ public class SystemCallLogDataSource implements CallLogDataSource { String numberAsStr = cursor.getString(numberColumn); long type = cursor.getType(typeColumn); String countryIso = cursor.getString(countryIsoColumn); - // TODO(zachh): Decide if should use "cached" columns from call log or recompute. + String formattedNumber = cursor.getString(cachedFormattedNumberColumn); int cachedNumberType = cursor.getInt(cachedNumberTypeColumn); String cachedNumberLabel = cursor.getString(cachedNumberLabelColumn); int isRead = cursor.getInt(isReadColumn); @@ -293,6 +268,7 @@ public class SystemCallLogDataSource implements CallLogDataSource { } contentValues.put(AnnotatedCallLog.TYPE, type); + contentValues.put(AnnotatedCallLog.FORMATTED_NUMBER, formattedNumber); // Phone.getTypeLabel returns "Custom" if given (0, null) which is not of any use. Just // omit setting the label if there's no information for it. diff --git a/java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java b/java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java index 654591688..488e8f430 100644 --- a/java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java +++ b/java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java @@ -31,18 +31,18 @@ final class CoalescedAnnotatedCallLogCursorLoader extends CursorLoader { private static final int TIMESTAMP = 1; private static final int NAME = 2; - private static final int CONTACT_PHOTO_URI = 3; - private static final int NUMBER_TYPE_LABEL = 4; - private static final int IS_READ = 5; - private static final int NEW = 6; - private static final int GEOCODED_LOCATION = 7; - private static final int PHONE_ACCOUNT_LABEL = 8; - private static final int PHONE_ACCOUNT_COLOR = 9; - private static final int FEATURES = 10; - private static final int IS_BUSINESS = 11; - private static final int IS_VOICEMAIL = 12; - private static final int NUMBER_CALLS = 13; - private static final int FORMATTED_NUMBER = 14; + private static final int FORMATTED_NUMBER = 3; + private static final int CONTACT_PHOTO_URI = 4; + private static final int NUMBER_TYPE_LABEL = 5; + private static final int IS_READ = 6; + private static final int NEW = 7; + private static final int GEOCODED_LOCATION = 8; + private static final int PHONE_ACCOUNT_LABEL = 9; + private static final int PHONE_ACCOUNT_COLOR = 10; + private static final int FEATURES = 11; + private static final int IS_BUSINESS = 12; + private static final int IS_VOICEMAIL = 13; + private static final int NUMBER_CALLS = 14; private static final int CALL_TYPES = 15; /** Convenience class for accessing values using an abbreviated syntax. */ |