From c2ea695927a5866cea732ea784a8ee4473b8ba19 Mon Sep 17 00:00:00 2001 From: twyen Date: Mon, 6 Nov 2017 16:56:11 -0800 Subject: Unify voicemail call placing All voicemails are called by using CallIntentBuilder.forVoicemail() so the PhoneAccountHandle can be designated. A future CL will use dialogs to customize the call (multi SIM selection, RTT, etc.) As a result voicemail error messages and legacy voicemail notifications will call the account it is received from directly. Bug: 64216442 Test: Unit tests PiperOrigin-RevId: 174784322 Change-Id: Ibe1c57bc7852e3d55a39a0cc2da19b6a79954c0f --- .../app/voicemail/error/OmtpVoicemailMessageCreator.java | 16 ++++++++-------- .../app/voicemail/error/VoicemailErrorMessage.java | 12 ++++++++---- .../dialer/app/voicemail/error/VoicemailStatus.java | 12 ++++++++++-- .../app/voicemail/error/Vvm3VoicemailMessageCreator.java | 14 +++++++------- 4 files changed, 33 insertions(+), 21 deletions(-) (limited to 'java/com/android/dialer/app/voicemail') diff --git a/java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java b/java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java index 9c8b1469e..4786ca665 100644 --- a/java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java +++ b/java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java @@ -66,7 +66,7 @@ public class OmtpVoicemailMessageCreator { return new VoicemailErrorMessage( context.getString(R.string.voicemail_error_activating_title), context.getString(R.string.voicemail_error_activating_message), - VoicemailErrorMessage.createCallVoicemailAction(context)); + VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle())); } if (Status.NOTIFICATION_CHANNEL_STATE_NO_CONNECTION == status.notificationChannelState) { @@ -77,7 +77,7 @@ public class OmtpVoicemailMessageCreator { return new VoicemailErrorMessage( context.getString(R.string.voicemail_error_activation_failed_title), context.getString(R.string.voicemail_error_activation_failed_message), - VoicemailErrorMessage.createCallVoicemailAction(context), + VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()), VoicemailErrorMessage.createRetryAction(context, status)); } @@ -85,7 +85,7 @@ public class OmtpVoicemailMessageCreator { return new VoicemailErrorMessage( context.getString(R.string.voicemail_error_no_data_title), context.getString(R.string.voicemail_error_no_data_message), - VoicemailErrorMessage.createCallVoicemailAction(context), + VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()), VoicemailErrorMessage.createRetryAction(context, status)); } @@ -93,7 +93,7 @@ public class OmtpVoicemailMessageCreator { return new VoicemailErrorMessage( context.getString(R.string.voicemail_error_no_data_title), context.getString(R.string.voicemail_error_no_data_cellular_required_message), - VoicemailErrorMessage.createCallVoicemailAction(context), + VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()), VoicemailErrorMessage.createRetryAction(context, status)); } @@ -101,7 +101,7 @@ public class OmtpVoicemailMessageCreator { return new VoicemailErrorMessage( context.getString(R.string.voicemail_error_bad_config_title), context.getString(R.string.voicemail_error_bad_config_message), - VoicemailErrorMessage.createCallVoicemailAction(context), + VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()), VoicemailErrorMessage.createRetryAction(context, status)); } @@ -109,7 +109,7 @@ public class OmtpVoicemailMessageCreator { return new VoicemailErrorMessage( context.getString(R.string.voicemail_error_communication_title), context.getString(R.string.voicemail_error_communication_message), - VoicemailErrorMessage.createCallVoicemailAction(context), + VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()), VoicemailErrorMessage.createRetryAction(context, status)); } @@ -117,7 +117,7 @@ public class OmtpVoicemailMessageCreator { return new VoicemailErrorMessage( context.getString(R.string.voicemail_error_server_title), context.getString(R.string.voicemail_error_server_message), - VoicemailErrorMessage.createCallVoicemailAction(context), + VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()), VoicemailErrorMessage.createRetryAction(context, status)); } @@ -125,7 +125,7 @@ public class OmtpVoicemailMessageCreator { return new VoicemailErrorMessage( context.getString(R.string.voicemail_error_server_connection_title), context.getString(R.string.voicemail_error_server_connection_message), - VoicemailErrorMessage.createCallVoicemailAction(context), + VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()), VoicemailErrorMessage.createRetryAction(context, status)); } diff --git a/java/com/android/dialer/app/voicemail/error/VoicemailErrorMessage.java b/java/com/android/dialer/app/voicemail/error/VoicemailErrorMessage.java index ab269f693..7cc6cda45 100644 --- a/java/com/android/dialer/app/voicemail/error/VoicemailErrorMessage.java +++ b/java/com/android/dialer/app/voicemail/error/VoicemailErrorMessage.java @@ -25,11 +25,12 @@ import android.support.annotation.Nullable; import android.telecom.PhoneAccountHandle; import android.view.View; import android.view.View.OnClickListener; +import com.android.dialer.callintent.CallInitiationType; +import com.android.dialer.callintent.CallIntentBuilder; import com.android.dialer.common.Assert; import com.android.dialer.common.PerAccountSharedPreferences; import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; -import com.android.dialer.util.CallUtil; import com.android.dialer.voicemail.settings.VoicemailChangePinActivity; import com.android.voicemail.VoicemailClient; import com.android.voicemail.VoicemailComponent; @@ -156,15 +157,18 @@ public class VoicemailErrorMessage { } @NonNull - public static Action createCallVoicemailAction(final Context context) { + public static Action createCallVoicemailAction( + final Context context, final PhoneAccountHandle phoneAccountHandle) { return new Action( context.getString(R.string.voicemail_action_call_voicemail), new OnClickListener() { @Override public void onClick(View v) { Logger.get(context).logImpression(DialerImpression.Type.VVM_CALL_VOICEMAIL_CLICKED); - Intent intent = new Intent(Intent.ACTION_CALL, CallUtil.getVoicemailUri()); - context.startActivity(intent); + context.startActivity( + CallIntentBuilder.forVoicemail( + phoneAccountHandle, CallInitiationType.Type.VOICEMAIL_ERROR_MESSAGE) + .build()); } }); } diff --git a/java/com/android/dialer/app/voicemail/error/VoicemailStatus.java b/java/com/android/dialer/app/voicemail/error/VoicemailStatus.java index 1cfbe86d0..a832b5dfb 100644 --- a/java/com/android/dialer/app/voicemail/error/VoicemailStatus.java +++ b/java/com/android/dialer/app/voicemail/error/VoicemailStatus.java @@ -30,6 +30,7 @@ import android.support.v4.os.BuildCompat; import android.telecom.PhoneAccountHandle; import android.telephony.ServiceState; import android.telephony.TelephonyManager; +import android.text.TextUtils; import com.android.dialer.common.LogUtil; import com.android.dialer.database.VoicemailStatusQuery; @@ -293,8 +294,15 @@ public class VoicemailStatus { return cursor.getString(index); } + @Nullable public PhoneAccountHandle getPhoneAccountHandle() { - return new PhoneAccountHandle( - ComponentName.unflattenFromString(phoneAccountComponentName), phoneAccountId); + if (TextUtils.isEmpty(phoneAccountComponentName) || TextUtils.isEmpty(phoneAccountId)) { + return null; + } + ComponentName componentName = ComponentName.unflattenFromString(phoneAccountComponentName); + if (componentName == null) { + return null; + } + return new PhoneAccountHandle(componentName, phoneAccountId); } } diff --git a/java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java b/java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java index 748b8142a..d10c7daf8 100644 --- a/java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java +++ b/java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java @@ -167,7 +167,7 @@ public class Vvm3VoicemailMessageCreator { return new VoicemailErrorMessage( context.getString(R.string.vvm3_error_unknown_user_title), getCustomerSupportString(context, R.string.vvm3_error_unknown_user_message), - VoicemailErrorMessage.createCallVoicemailAction(context), + VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()), createCallCustomerSupportAction(context)); } @@ -175,7 +175,7 @@ public class Vvm3VoicemailMessageCreator { return new VoicemailErrorMessage( context.getString(R.string.vvm3_error_unknown_device_title), getCustomerSupportString(context, R.string.vvm3_error_unknown_device_message), - VoicemailErrorMessage.createCallVoicemailAction(context), + VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()), createCallCustomerSupportAction(context)); } @@ -183,7 +183,7 @@ public class Vvm3VoicemailMessageCreator { return new VoicemailErrorMessage( context.getString(R.string.vvm3_error_invalid_password_title), getCustomerSupportString(context, R.string.vvm3_error_invalid_password_message), - VoicemailErrorMessage.createCallVoicemailAction(context), + VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()), createCallCustomerSupportAction(context)); } @@ -219,7 +219,7 @@ public class Vvm3VoicemailMessageCreator { return new VoicemailErrorMessage( context.getString(R.string.vvm3_error_subscriber_unknown_title), getCustomerSupportString(context, R.string.vvm3_error_subscriber_unknown_message), - VoicemailErrorMessage.createCallVoicemailAction(context), + VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()), createCallCustomerSupportAction(context)); } @@ -227,7 +227,7 @@ public class Vvm3VoicemailMessageCreator { return new VoicemailErrorMessage( context.getString(R.string.vvm3_error_imap_getquota_error_title), getCustomerSupportString(context, R.string.vvm3_error_imap_getquota_error_message), - VoicemailErrorMessage.createCallVoicemailAction(context), + VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()), createCallCustomerSupportAction(context)); } @@ -235,7 +235,7 @@ public class Vvm3VoicemailMessageCreator { return new VoicemailErrorMessage( context.getString(R.string.vvm3_error_imap_select_error_title), getCustomerSupportString(context, R.string.vvm3_error_imap_select_error_message), - VoicemailErrorMessage.createCallVoicemailAction(context), + VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()), createCallCustomerSupportAction(context)); } @@ -243,7 +243,7 @@ public class Vvm3VoicemailMessageCreator { return new VoicemailErrorMessage( context.getString(R.string.vvm3_error_imap_error_title), getCustomerSupportString(context, R.string.vvm3_error_imap_error_message), - VoicemailErrorMessage.createCallVoicemailAction(context), + VoicemailErrorMessage.createCallVoicemailAction(context, status.getPhoneAccountHandle()), createCallCustomerSupportAction(context)); } -- cgit v1.2.3