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