From 5691d502729c286f9a8eb50e0b6130a36b734230 Mon Sep 17 00:00:00 2001 From: Calvin Pan Date: Mon, 22 Feb 2021 11:57:03 +0800 Subject: [PATCH] Show VoLTE UI when VoIMS opt-in enabled Show VoLTE settings if VoIMS opt-in has been enabled irrespective of other VoLTE settings. Bug: 177010560 Test: Override hide_enhanced_4g_lte_bool to true and check the UI. Change-Id: Ib305bae904f0028571874e204a415dfcd4457982 --- .../settings/network/ims/VolteQueryImsState.java | 14 ++++++++++++++ .../Enhanced4gBasePreferenceController.java | 8 +++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/network/ims/VolteQueryImsState.java b/src/com/android/settings/network/ims/VolteQueryImsState.java index 167b4b13a3e..b09a1304136 100644 --- a/src/com/android/settings/network/ims/VolteQueryImsState.java +++ b/src/com/android/settings/network/ims/VolteQueryImsState.java @@ -16,11 +16,14 @@ package com.android.settings.network.ims; +import static android.telephony.ims.ProvisioningManager.KEY_VOIMS_OPT_IN_STATUS; + import android.content.Context; import android.telecom.TelecomManager; import android.telephony.AccessNetworkConstants; import android.telephony.SubscriptionManager; import android.telephony.ims.ImsException; +import android.telephony.ims.ProvisioningManager; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; import android.util.Log; @@ -133,4 +136,15 @@ public class VolteQueryImsState extends ImsQueryController { } return isEnabledByUser(mSubId); } + + /** + * Get VoIMS opt-in configuration. + * + * @return true when VoIMS opt-in has been enabled, otherwise false + */ + public boolean isVoImsOptInEnabled() { + int voImsOptInStatus = ProvisioningManager.createForSubscriptionId(mSubId) + .getProvisioningIntValue(KEY_VOIMS_OPT_IN_STATUS); + return voImsOptInStatus == ProvisioningManager.PROVISIONING_VALUE_ENABLED; + } } diff --git a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java index fbbdabc701d..c2b1fc4f453 100644 --- a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java +++ b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java @@ -107,12 +107,18 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc if (!isModeMatched()) { return CONDITIONALLY_UNAVAILABLE; } + final VolteQueryImsState queryState = queryImsState(subId); + // Show VoLTE settings if VoIMS opt-in has been enabled irrespective of other VoLTE settings + if (queryState.isVoImsOptInEnabled()) { + return AVAILABLE; + } + final PersistableBundle carrierConfig = getCarrierConfigForSubId(subId); if ((carrierConfig == null) || carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL)) { return CONDITIONALLY_UNAVAILABLE; } - final VolteQueryImsState queryState = queryImsState(subId); + if (!queryState.isReadyToVoLte()) { return CONDITIONALLY_UNAVAILABLE; }