diff options
Diffstat (limited to 'java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java')
-rw-r--r-- | java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java b/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java index 2b496c0ca..aaa1e150d 100644 --- a/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java +++ b/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java @@ -24,16 +24,22 @@ import android.preference.PreferenceScreen; import android.preference.SwitchPreference; import android.provider.Settings; import android.support.annotation.Nullable; +import android.support.annotation.VisibleForTesting; +import android.telecom.PhoneAccount; import android.telecom.PhoneAccountHandle; +import android.telecom.TelecomManager; +import android.telephony.SubscriptionInfo; import android.telephony.TelephonyManager; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; import com.android.dialer.notification.NotificationChannelManager; +import com.android.dialer.telecom.TelecomUtil; import com.android.voicemail.VoicemailClient; import com.android.voicemail.VoicemailClient.ActivationStateListener; import com.android.voicemail.VoicemailComponent; +import com.google.common.base.Optional; /** * Fragment for voicemail settings. Requires {@link VoicemailClient#PARAM_PHONE_ACCOUNT_HANDLE} set @@ -45,6 +51,16 @@ public class VoicemailSettingsFragment extends PreferenceFragment private static final String TAG = "VmSettingsActivity"; + // Extras copied from com.android.phone.settings.VoicemailSettingsActivity, + // it does not recognize EXTRA_PHONE_ACCOUNT_HANDLE in O. + @VisibleForTesting + static final String SUB_ID_EXTRA = + "com.android.phone.settings.SubscriptionInfoHelper.SubscriptionId"; + // Extra on intent containing the label of a subscription. + @VisibleForTesting + static final String SUB_LABEL_EXTRA = + "com.android.phone.settings.SubscriptionInfoHelper.SubscriptionLabel"; + @Nullable private PhoneAccountHandle phoneAccountHandle; private VoicemailClient voicemailClient; @@ -167,6 +183,19 @@ public class VoicemailSettingsFragment extends PreferenceFragment advancedSettingsIntent.putExtra(TelephonyManager.EXTRA_HIDE_PUBLIC_SETTINGS, true); advancedSettingsIntent.putExtra( TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle); + + // (a bug): EXTRA_PHONE_ACCOUNT_HANDLE not implemented in telephony in O. + Optional<SubscriptionInfo> subscriptionInfo = + TelecomUtil.getSubscriptionInfo(getContext(), phoneAccountHandle); + if (subscriptionInfo.isPresent()) { + advancedSettingsIntent.putExtra(SUB_ID_EXTRA, subscriptionInfo.get().getSubscriptionId()); + PhoneAccount phoneAccount = + getContext().getSystemService(TelecomManager.class).getPhoneAccount(phoneAccountHandle); + if (phoneAccount != null) { + advancedSettingsIntent.putExtra(SUB_LABEL_EXTRA, phoneAccount.getLabel()); + } + } + advancedSettings.setIntent(advancedSettingsIntent); voicemailChangePinPreference.setOnPreferenceClickListener( new OnPreferenceClickListener() { |