summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/app/voicemail
diff options
context:
space:
mode:
authortwyen <twyen@google.com>2017-11-06 16:56:11 -0800
committerZachary Heidepriem <zachh@google.com>2017-11-11 12:17:36 -0800
commitc2ea695927a5866cea732ea784a8ee4473b8ba19 (patch)
tree01cbae62f8260a83cf1ff1643c00cd82af084de9 /java/com/android/dialer/app/voicemail
parentfda5efd65523322261a8e51c4cd8f58a9b6fede5 (diff)
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
Diffstat (limited to 'java/com/android/dialer/app/voicemail')
-rw-r--r--java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java16
-rw-r--r--java/com/android/dialer/app/voicemail/error/VoicemailErrorMessage.java12
-rw-r--r--java/com/android/dialer/app/voicemail/error/VoicemailStatus.java12
-rw-r--r--java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java14
4 files changed, 33 insertions, 21 deletions
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));
}