Send PhoneAccountHandle with ACTION_CONFIGURE_VOICEMAIL
When opening a voicemail setting from Dialer with
ACTION_CONFIGURE_VOICEMAIL, no subId is passed.
So on a multi-SIM device, it is always configuration on the default
phone regardless of SIM.
To solve this, set the PhoneAccountHandle to intent extra for
ACTION_CONFIGURE_VOICEMAIL. In the advanced settings, obtains subId
from the PhoneAccountHandle.
Test: manual - Checked that correct PhoneAccountHandle will be passed
with ACTION_CONFIGURE_VOICEMAIL intent
Bug: 65001008
Author: xuegang.x.liu <xuegang.x.liu@sony.com>
Bug: 65001008
Test: manual - Checked that correct PhoneAccountHandle will be passed
PiperOrigin-RevId: 168019873
Change-Id: I8578dd2c4ac24e4af121a90b2b175baae2832461
diff --git a/java/com/android/dialer/app/voicemail/error/VoicemailTosMessageCreator.java b/java/com/android/dialer/app/voicemail/error/VoicemailTosMessageCreator.java
index baf7b99..53f4680 100644
--- a/java/com/android/dialer/app/voicemail/error/VoicemailTosMessageCreator.java
+++ b/java/com/android/dialer/app/voicemail/error/VoicemailTosMessageCreator.java
@@ -143,7 +143,7 @@
if (isVvm3() && Vvm3VoicemailMessageCreator.PIN_NOT_SET == status.configurationState) {
LogUtil.i(
"VoicemailTosMessageCreator.showDeclineTosDialog", "PIN_NOT_SET, showing set PIN dialog");
- showSetPinBeforeDeclineDialog();
+ showSetPinBeforeDeclineDialog(handle);
return;
}
LogUtil.i(
@@ -180,7 +180,7 @@
builder.show();
}
- private void showSetPinBeforeDeclineDialog() {
+ private void showSetPinBeforeDeclineDialog(PhoneAccountHandle phoneAccountHandle) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage(R.string.verizon_terms_and_conditions_decline_set_pin_dialog_message);
builder.setPositiveButton(
@@ -191,6 +191,7 @@
Logger.get(context)
.logImpression(DialerImpression.Type.VOICEMAIL_VVM3_TOS_DECLINE_CHANGE_PIN_SHOWN);
Intent intent = new Intent(TelephonyManager.ACTION_CONFIGURE_VOICEMAIL);
+ intent.putExtra(TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
context.startActivity(intent);
}
});
diff --git a/java/com/android/voicemail/impl/settings/VoicemailSettingsFragment.java b/java/com/android/voicemail/impl/settings/VoicemailSettingsFragment.java
index 4860649..e2ea725 100644
--- a/java/com/android/voicemail/impl/settings/VoicemailSettingsFragment.java
+++ b/java/com/android/voicemail/impl/settings/VoicemailSettingsFragment.java
@@ -151,6 +151,8 @@
(PreferenceScreen) findPreference(getString(R.string.voicemail_advanced_settings_key));
Intent advancedSettingsIntent = new Intent(TelephonyManager.ACTION_CONFIGURE_VOICEMAIL);
advancedSettingsIntent.putExtra(TelephonyManager.EXTRA_HIDE_PUBLIC_SETTINGS, true);
+ advancedSettingsIntent.putExtra(
+ TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
advancedSettings.setIntent(advancedSettingsIntent);
voicemailChangePinPreference.setOnPreferenceClickListener(
new OnPreferenceClickListener() {
diff --git a/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java b/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
index e902825..d55e3b5 100644
--- a/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
+++ b/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
@@ -101,6 +101,8 @@
Intent launchVoicemailSettingsIntent =
new Intent(TelephonyManager.ACTION_CONFIGURE_VOICEMAIL);
launchVoicemailSettingsIntent.putExtra(TelephonyManager.EXTRA_HIDE_PUBLIC_SETTINGS, true);
+ launchVoicemailSettingsIntent.putExtra(
+ TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
launchVoicemailSettingsPendingIntent =
PendingIntent.getActivity(
diff --git a/java/com/android/voicemail/stub/StubVoicemailClient.java b/java/com/android/voicemail/stub/StubVoicemailClient.java
index 9929503..c2c7a6d 100644
--- a/java/com/android/voicemail/stub/StubVoicemailClient.java
+++ b/java/com/android/voicemail/stub/StubVoicemailClient.java
@@ -77,7 +77,9 @@
@Override
public Intent getSetPinIntent(Context context, PhoneAccountHandle phoneAccountHandle) {
- return new Intent(TelephonyManager.ACTION_CONFIGURE_VOICEMAIL);
+ Intent intent = new Intent(TelephonyManager.ACTION_CONFIGURE_VOICEMAIL);
+ intent.putExtra(TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
+ return intent;
}
@Override