diff options
10 files changed, 67 insertions, 214 deletions
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java index 7df83b3d1..66ba8aa59 100644 --- a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java +++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java @@ -68,8 +68,6 @@ public class AnnotatedCallLogDatabaseHelper extends SQLiteOpenHelper { + (AnnotatedCallLog.GEOCODED_LOCATION + " text, ") + (AnnotatedCallLog.PHONE_ACCOUNT_COMPONENT_NAME + " text, ") + (AnnotatedCallLog.PHONE_ACCOUNT_ID + " text, ") - + (AnnotatedCallLog.PHONE_ACCOUNT_LABEL + " text, ") - + (AnnotatedCallLog.PHONE_ACCOUNT_COLOR + " integer, ") + (AnnotatedCallLog.FEATURES + " integer, ") + (AnnotatedCallLog.TRANSCRIPTION + " integer, ") + (AnnotatedCallLog.VOICEMAIL_URI + " text, ") diff --git a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java index b1cf6e495..5e4e4afd3 100644 --- a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java +++ b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java @@ -103,20 +103,6 @@ public class AnnotatedCallLogContract { String PHONE_ACCOUNT_ID = "phone_account_id"; /** - * String suitable for display which indicates the phone account used to make the call. - * - * <p>TYPE: TEXT - */ - String PHONE_ACCOUNT_LABEL = "phone_account_label"; - - /** - * The color int for the phone account. - * - * <p>TYPE: INTEGER (int) - */ - String PHONE_ACCOUNT_COLOR = "phone_account_color"; - - /** * See {@link android.provider.CallLog.Calls#FEATURES}. * * <p>TYPE: INTEGER (int) @@ -170,8 +156,6 @@ public class AnnotatedCallLogContract { GEOCODED_LOCATION, PHONE_ACCOUNT_COMPONENT_NAME, PHONE_ACCOUNT_ID, - PHONE_ACCOUNT_LABEL, - PHONE_ACCOUNT_COLOR, FEATURES, NUMBER_ATTRIBUTES, IS_VOICEMAIL_CALL, @@ -223,9 +207,9 @@ public class AnnotatedCallLogContract { public static final String TRANSCRIPTION = "transcription"; /** - * See {@link VoicemailCompat.TRANSCRIPTION_STATE} + * See {@link VoicemailCompat#TRANSCRIPTION_STATE} * - * <p>Only populated in {@link Build.VERSION_CODES.O} and above + * <p>Only populated in {@link Build.VERSION_CODES#O} and above * * <p>TYPE: INTEGER */ diff --git a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java index df4e66e8b..99c3c9d0c 100644 --- a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java +++ b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java @@ -29,13 +29,10 @@ import android.provider.CallLog; import android.provider.CallLog.Calls; import android.provider.VoicemailContract; import android.provider.VoicemailContract.Voicemails; -import android.support.annotation.ColorInt; import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; import android.support.annotation.VisibleForTesting; import android.support.annotation.WorkerThread; -import android.telecom.PhoneAccount; -import android.telecom.PhoneAccountHandle; import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import android.util.ArraySet; @@ -46,7 +43,6 @@ import com.android.dialer.calllog.datasources.CallLogDataSource; import com.android.dialer.calllog.datasources.CallLogMutations; import com.android.dialer.calllog.datasources.util.RowCombiner; import com.android.dialer.calllog.observer.MarkDirtyObserver; -import com.android.dialer.calllogutils.PhoneAccountUtils; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor; @@ -55,8 +51,6 @@ import com.android.dialer.duo.DuoConstants; import com.android.dialer.inject.ApplicationContext; import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil; import com.android.dialer.storage.Unencrypted; -import com.android.dialer.telecom.TelecomUtil; -import com.android.dialer.theme.R; import com.android.dialer.util.PermissionsUtil; import com.google.common.collect.Iterables; import com.google.common.util.concurrent.Futures; @@ -236,8 +230,6 @@ public class SystemCallLogDataSource implements CallLogDataSource { .useMostRecentString(AnnotatedCallLog.GEOCODED_LOCATION) .useSingleValueString(AnnotatedCallLog.PHONE_ACCOUNT_COMPONENT_NAME) .useSingleValueString(AnnotatedCallLog.PHONE_ACCOUNT_ID) - .useSingleValueString(AnnotatedCallLog.PHONE_ACCOUNT_LABEL) - .useSingleValueLong(AnnotatedCallLog.PHONE_ACCOUNT_COLOR) .useMostRecentLong(AnnotatedCallLog.CALL_TYPE) // If any call in a group includes a feature (like Wifi/HD), consider the group to have the // feature. @@ -372,8 +364,6 @@ public class SystemCallLogDataSource implements CallLogDataSource { contentValues.put(AnnotatedCallLog.GEOCODED_LOCATION, geocodedLocation); contentValues.put(AnnotatedCallLog.PHONE_ACCOUNT_COMPONENT_NAME, phoneAccountComponentName); contentValues.put(AnnotatedCallLog.PHONE_ACCOUNT_ID, phoneAccountId); - populatePhoneAccountLabelAndColor( - appContext, contentValues, phoneAccountComponentName, phoneAccountId); contentValues.put(AnnotatedCallLog.FEATURES, features); contentValues.put(AnnotatedCallLog.DURATION, duration); contentValues.put(AnnotatedCallLog.DATA_USAGE, dataUsage); @@ -458,32 +448,6 @@ public class SystemCallLogDataSource implements CallLogDataSource { return PROJECTION_PRE_O; } - private void populatePhoneAccountLabelAndColor( - Context appContext, - ContentValues contentValues, - String phoneAccountComponentName, - String phoneAccountId) { - PhoneAccountHandle phoneAccountHandle = - TelecomUtil.composePhoneAccountHandle(phoneAccountComponentName, phoneAccountId); - if (phoneAccountHandle == null) { - return; - } - String label = PhoneAccountUtils.getAccountLabel(appContext, phoneAccountHandle); - if (TextUtils.isEmpty(label)) { - return; - } - contentValues.put(AnnotatedCallLog.PHONE_ACCOUNT_LABEL, label); - - @ColorInt int color = PhoneAccountUtils.getAccountColor(appContext, phoneAccountHandle); - if (color == PhoneAccount.NO_HIGHLIGHT_COLOR) { - color = - appContext - .getResources() - .getColor(R.color.dialer_secondary_text_color, appContext.getTheme()); - } - contentValues.put(AnnotatedCallLog.PHONE_ACCOUNT_COLOR, color); - } - private static void handleDeletes( Context appContext, Set<Long> existingAnnotatedCallLogIds, CallLogMutations mutations) { Set<Long> systemCallLogIds = diff --git a/java/com/android/dialer/calllog/model/coalesced_row.proto b/java/com/android/dialer/calllog/model/coalesced_row.proto index 3cb10e7a6..913f07298 100644 --- a/java/com/android/dialer/calllog/model/coalesced_row.proto +++ b/java/com/android/dialer/calllog/model/coalesced_row.proto @@ -12,7 +12,7 @@ import "java/com/android/dialer/calllog/database/contract/number_attributes.prot import "java/com/android/dialer/phonenumberproto/dialer_phone_number.proto"; // Contains the contents of a row from the CoalescedAnnotatedCallLog. -// Next ID: 19 +// Next ID: 17 message CoalescedRow { // Value in column CoalescedAnnotatedCallLog._ID optional int64 id = 1; @@ -44,27 +44,21 @@ message CoalescedRow { // Value in column CoalescedAnnotatedCallLog.PHONE_ACCOUNT_ID optional string phone_account_id = 10; - // Value in column CoalescedAnnotatedCallLog.PHONE_ACCOUNT_LABEL - optional string phone_account_label = 11; - - // Value in column CoalescedAnnotatedCallLog.PHONE_ACCOUNT_COLOR - optional int32 phone_account_color = 12; - // Value in column CoalescedAnnotatedCallLog.FEATURES - optional int32 features = 13; + optional int32 features = 11; // Value in column CoalescedAnnotatedCallLog.CALL_TYPE - optional int32 call_type = 14; + optional int32 call_type = 12; // Value in column CoalescedAnnotatedCallLog.NUMBER_ATTRIBUTES - optional com.android.dialer.NumberAttributes number_attributes = 15; + optional com.android.dialer.NumberAttributes number_attributes = 13; // Value in column CoalescedAnnotatedCallLog.IS_VOICEMAIL_CALL - optional bool is_voicemail_call = 16; + optional bool is_voicemail_call = 14; // Value in column CoalescedAnnotatedCallLog.VOICEMAIL_CALL_TAG - optional string voicemail_call_tag = 17; + optional string voicemail_call_tag = 15; // Value in column CoalescedAnnotatedCallLog.COALESCED_IDS - optional com.android.dialer.CoalescedIds coalesced_ids = 18; + optional com.android.dialer.CoalescedIds coalesced_ids = 16; } diff --git a/java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java b/java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java index e2ddcc846..164bb7dad 100644 --- a/java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java +++ b/java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java @@ -41,14 +41,12 @@ final class CoalescedAnnotatedCallLogCursorLoader extends CursorLoader { private static final int GEOCODED_LOCATION = 7; private static final int PHONE_ACCOUNT_COMPONENT_NAME = 8; private static final int PHONE_ACCOUNT_ID = 9; - private static final int PHONE_ACCOUNT_LABEL = 10; - private static final int PHONE_ACCOUNT_COLOR = 11; - private static final int FEATURES = 12; - private static final int NUMBER_ATTRIBUTES = 13; - private static final int IS_VOICEMAIL_CALL = 14; - private static final int VOICEMAIL_CALL_TAG = 15; - private static final int CALL_TYPE = 16; - private static final int COALESCED_IDS = 17; + private static final int FEATURES = 10; + private static final int NUMBER_ATTRIBUTES = 11; + private static final int IS_VOICEMAIL_CALL = 12; + private static final int VOICEMAIL_CALL_TAG = 13; + private static final int CALL_TYPE = 14; + private static final int COALESCED_IDS = 15; CoalescedAnnotatedCallLogCursorLoader(Context context) { // CoalescedAnnotatedCallLog requires that PROJECTION be ALL_COLUMNS and the following params be @@ -93,7 +91,6 @@ final class CoalescedAnnotatedCallLogCursorLoader extends CursorLoader { .setNumberPresentation(cursor.getInt(NUMBER_PRESENTATION)) .setIsRead(cursor.getInt(IS_READ) == 1) .setIsNew(cursor.getInt(NEW) == 1) - .setPhoneAccountColor(cursor.getInt(PHONE_ACCOUNT_COLOR)) .setFeatures(cursor.getInt(FEATURES)) .setCallType(cursor.getInt(CALL_TYPE)) .setNumberAttributes(numberAttributes) @@ -121,11 +118,6 @@ final class CoalescedAnnotatedCallLogCursorLoader extends CursorLoader { coalescedRowBuilder.setPhoneAccountId(phoneAccountId); } - String phoneAccountLabel = cursor.getString(PHONE_ACCOUNT_LABEL); - if (!TextUtils.isEmpty(phoneAccountLabel)) { - coalescedRowBuilder.setPhoneAccountLabel(phoneAccountLabel); - } - String voicemailCallTag = cursor.getString(VOICEMAIL_CALL_TAG); if (!TextUtils.isEmpty(voicemailCallTag)) { coalescedRowBuilder.setVoicemailCallTag(voicemailCallTag); diff --git a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java index d1a654a09..796ffe515 100644 --- a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java +++ b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java @@ -20,9 +20,12 @@ import android.content.Intent; import android.content.res.ColorStateList; import android.database.Cursor; import android.provider.CallLog.Calls; +import android.support.annotation.ColorInt; import android.support.annotation.DrawableRes; import android.support.v4.os.BuildCompat; import android.support.v7.widget.RecyclerView; +import android.telecom.PhoneAccount; +import android.telecom.PhoneAccountHandle; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -33,10 +36,12 @@ import com.android.dialer.calllog.ui.menu.NewCallLogMenu; import com.android.dialer.calllogutils.CallLogEntryText; import com.android.dialer.calllogutils.CallLogIntents; import com.android.dialer.calllogutils.NumberAttributesConverter; +import com.android.dialer.calllogutils.PhoneAccountUtils; import com.android.dialer.common.concurrent.DialerExecutorComponent; import com.android.dialer.compat.AppCompatConstants; import com.android.dialer.compat.telephony.TelephonyManagerCompat; import com.android.dialer.oem.MotorolaUtils; +import com.android.dialer.telecom.TelecomUtil; import com.android.dialer.time.Clock; import com.android.dialer.widget.ContactPhotoView; import com.google.common.util.concurrent.FutureCallback; @@ -232,13 +237,30 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder { } private void setPhoneAccounts(CoalescedRow row) { - if (!TextUtils.isEmpty(row.getPhoneAccountLabel())) { - phoneAccountView.setText(row.getPhoneAccountLabel()); - phoneAccountView.setTextColor(row.getPhoneAccountColor()); - phoneAccountView.setVisibility(View.VISIBLE); - } else { + PhoneAccountHandle phoneAccountHandle = + TelecomUtil.composePhoneAccountHandle( + row.getPhoneAccountComponentName(), row.getPhoneAccountId()); + if (phoneAccountHandle == null) { + phoneAccountView.setVisibility(View.GONE); + return; + } + + String phoneAccountLabel = PhoneAccountUtils.getAccountLabel(context, phoneAccountHandle); + if (TextUtils.isEmpty(phoneAccountLabel)) { phoneAccountView.setVisibility(View.GONE); + return; } + + @ColorInt + int phoneAccountColor = PhoneAccountUtils.getAccountColor(context, phoneAccountHandle); + if (phoneAccountColor == PhoneAccount.NO_HIGHLIGHT_COLOR) { + phoneAccountColor = + context.getResources().getColor(R.color.dialer_secondary_text_color, context.getTheme()); + } + + phoneAccountView.setText(phoneAccountLabel); + phoneAccountView.setTextColor(phoneAccountColor); + phoneAccountView.setVisibility(View.VISIBLE); } private void setOnClickListenerForRow(CoalescedRow row) { diff --git a/java/com/android/dialer/main/impl/MainSearchController.java b/java/com/android/dialer/main/impl/MainSearchController.java index dbeed0d69..b9a6654b6 100644 --- a/java/com/android/dialer/main/impl/MainSearchController.java +++ b/java/com/android/dialer/main/impl/MainSearchController.java @@ -95,6 +95,8 @@ public class MainSearchController implements SearchBarListener { * want to wait until onPause is called otherwise the transition will look extremely janky. */ private boolean closeSearchOnPause; + + private boolean callPlacedFromSearch; private boolean requestingPermission; public MainSearchController( @@ -472,10 +474,11 @@ public class MainSearchController implements SearchBarListener { closeKeyboard(); if (closeSearchOnPause) { - closeSearchOnPause = false; - if (isInSearch()) { + if (isInSearch() && (callPlacedFromSearch || !isDialpadVisible())) { closeSearch(false); } + closeSearchOnPause = false; + callPlacedFromSearch = false; } } @@ -494,6 +497,7 @@ public class MainSearchController implements SearchBarListener { @Override public void onCallPlacedFromSearch() { closeSearchOnPause = true; + callPlacedFromSearch = true; } @Override diff --git a/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java b/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java index 032153d77..b56f792cb 100644 --- a/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java +++ b/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java @@ -369,10 +369,13 @@ public class OmtpVvmCarrierConfigHelper { public void activateSmsFilter() { Assert.checkArgument(isValid()); - TelephonyMangerCompat.setVisualVoicemailSmsFilterSettings( - context, - getPhoneAccountHandle(), - new VisualVoicemailSmsFilterSettings.Builder().setClientPrefix(getClientPrefix()).build()); + context + .getSystemService(TelephonyManager.class) + .createForPhoneAccountHandle(getPhoneAccountHandle()) + .setVisualVoicemailSmsFilterSettings( + new VisualVoicemailSmsFilterSettings.Builder() + .setClientPrefix(getClientPrefix()) + .build()); } public void startDeactivation() { @@ -380,8 +383,10 @@ public class OmtpVvmCarrierConfigHelper { VvmLog.i(TAG, "startDeactivation"); if (!isLegacyModeEnabled()) { // SMS should still be filtered in legacy mode - TelephonyMangerCompat.setVisualVoicemailSmsFilterSettings( - context, getPhoneAccountHandle(), null); + context + .getSystemService(TelephonyManager.class) + .createForPhoneAccountHandle(getPhoneAccountHandle()) + .setVisualVoicemailSmsFilterSettings(null); VvmLog.i(TAG, "filter disabled"); } if (protocol != null) { diff --git a/java/com/android/voicemail/impl/TelephonyMangerCompat.java b/java/com/android/voicemail/impl/TelephonyMangerCompat.java deleted file mode 100644 index 404b4d6ca..000000000 --- a/java/com/android/voicemail/impl/TelephonyMangerCompat.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.voicemail.impl; - -import android.app.PendingIntent; -import android.content.Context; -import android.telecom.PhoneAccountHandle; -import android.telephony.TelephonyManager; -import android.telephony.VisualVoicemailService; -import android.telephony.VisualVoicemailSmsFilterSettings; -import com.android.dialer.common.LogUtil; -import java.lang.reflect.Method; - -/** Handles {@link TelephonyManager} API changes in experimental SDK */ -public class TelephonyMangerCompat { - /** Moved from VisualVoicemailService to TelephonyManager */ - public static String sendVisualVoicemailSms( - Context context, - PhoneAccountHandle phoneAccountHandle, - String number, - int port, - String text, - PendingIntent sentIntent) { - try { - Method method = - TelephonyManager.class.getMethod( - "sendVisualVoicemailSms", String.class, int.class, String.class, PendingIntent.class); - try { - LogUtil.i("TelephonyMangerCompat.sendVisualVoicemailSms", "using TelephonyManager"); - TelephonyManager telephonyManager = - context - .getSystemService(TelephonyManager.class) - .createForPhoneAccountHandle(phoneAccountHandle); - return (String) method.invoke(telephonyManager, number, port, text, sentIntent); - } catch (ReflectiveOperationException e) { - throw new RuntimeException(e); - } - } catch (NoSuchMethodException e) { - // Do nothing, try the next version. - } - - try { - LogUtil.i("TelephonyMangerCompat.sendVisualVoicemailSms", "using VisualVoicemailService"); - Method method = - VisualVoicemailService.class.getMethod( - "sendVisualVoicemailSms", - Context.class, - PhoneAccountHandle.class, - String.class, - short.class, - String.class, - PendingIntent.class); - return (String) - method.invoke(null, context, phoneAccountHandle, number, (short) port, text, sentIntent); - - } catch (ReflectiveOperationException e) { - throw new RuntimeException(e); - } - } - - /** Moved from VisualVoicemailService to TelephonyManager */ - public static String setVisualVoicemailSmsFilterSettings( - Context context, - PhoneAccountHandle phoneAccountHandle, - VisualVoicemailSmsFilterSettings settings) { - try { - Method method = - TelephonyManager.class.getMethod( - "setVisualVoicemailSmsFilterSettings", VisualVoicemailSmsFilterSettings.class); - try { - LogUtil.i( - "TelephonyMangerCompat.setVisualVoicemailSmsFilterSettings", "using TelephonyManager"); - TelephonyManager telephonyManager = - context - .getSystemService(TelephonyManager.class) - .createForPhoneAccountHandle(phoneAccountHandle); - return (String) method.invoke(telephonyManager, settings); - } catch (ReflectiveOperationException e) { - throw new RuntimeException(e); - } - } catch (NoSuchMethodException e) { - // Do nothing, try the next version. - } - - try { - LogUtil.i( - "TelephonyMangerCompat.setVisualVoicemailSmsFilterSettings", - "using VisualVoicemailService"); - Method method = - VisualVoicemailService.class.getMethod( - "setSmsFilterSettings", - Context.class, - PhoneAccountHandle.class, - VisualVoicemailSmsFilterSettings.class); - return (String) method.invoke(null, context, phoneAccountHandle, settings); - - } catch (ReflectiveOperationException e) { - throw new RuntimeException(e); - } - } -} diff --git a/java/com/android/voicemail/impl/sms/OmtpMessageSender.java b/java/com/android/voicemail/impl/sms/OmtpMessageSender.java index 76a258366..8b9e049d5 100644 --- a/java/com/android/voicemail/impl/sms/OmtpMessageSender.java +++ b/java/com/android/voicemail/impl/sms/OmtpMessageSender.java @@ -15,13 +15,15 @@ */ package com.android.voicemail.impl.sms; +import android.annotation.TargetApi; import android.app.PendingIntent; import android.content.Context; +import android.os.Build.VERSION_CODES; import android.support.annotation.Nullable; import android.telecom.PhoneAccountHandle; import android.telephony.SmsManager; +import android.telephony.TelephonyManager; import com.android.voicemail.impl.OmtpConstants; -import com.android.voicemail.impl.TelephonyMangerCompat; import com.android.voicemail.impl.VvmLog; /** @@ -33,6 +35,7 @@ import com.android.voicemail.impl.VvmLog; * * <p>Provides simple APIs to send different types of mobile originated OMTP SMS to the VVM server. */ +@TargetApi(VERSION_CODES.O) public abstract class OmtpMessageSender { protected static final String TAG = "OmtpMessageSender"; protected final Context context; @@ -80,8 +83,10 @@ public abstract class OmtpMessageSender { VvmLog.v( TAG, String.format("Sending sms '%s' to %s:%d", text, destinationNumber, applicationPort)); - TelephonyMangerCompat.sendVisualVoicemailSms( - context, phoneAccountHandle, destinationNumber, applicationPort, text, sentIntent); + context + .getSystemService(TelephonyManager.class) + .createForPhoneAccountHandle(phoneAccountHandle) + .sendVisualVoicemailSms(destinationNumber, applicationPort, text, sentIntent); } protected void appendField(StringBuilder sb, String field, Object value) { |