From f3b21931a5e4329ecd1475e30df930ebbdabfa8d Mon Sep 17 00:00:00 2001 From: SongFerngWang Date: Fri, 19 Feb 2021 20:57:30 +0800 Subject: [PATCH] EnabledNetworkModePreferenceController redo Init after sim activate Failed to get RadioAccessFamily information from TelephonyManager.getSupportedRadioAccessFamily due to SIM inactivated Bug: 180360457 Test: atest EnabledNetworkModePreferenceControllerTest Change-Id: Icfce6c319e9a84318c9496125718cd60dda6afbb --- ...nabledNetworkModePreferenceController.java | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java index 9e7a3a8b2a5..5680bf60140 100644 --- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java @@ -35,6 +35,7 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.network.AllowedNetworkTypesListener; +import com.android.settings.network.SubscriptionsChangeListener; import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants; import java.util.ArrayList; @@ -47,7 +48,8 @@ import java.util.stream.Stream; */ public class EnabledNetworkModePreferenceController extends TelephonyBasePreferenceController implements - ListPreference.OnPreferenceChangeListener, LifecycleObserver { + ListPreference.OnPreferenceChangeListener, LifecycleObserver, + SubscriptionsChangeListener.SubscriptionsChangeListenerClient { private static final String LOG_TAG = "EnabledNetworkMode"; private AllowedNetworkTypesListener mAllowedNetworkTypesListener; @@ -56,9 +58,11 @@ public class EnabledNetworkModePreferenceController extends private TelephonyManager mTelephonyManager; private CarrierConfigManager mCarrierConfigManager; private PreferenceEntriesBuilder mBuilder; + private SubscriptionsChangeListener mSubscriptionsListener; public EnabledNetworkModePreferenceController(Context context, String key) { super(context, key); + mSubscriptionsListener = new SubscriptionsChangeListener(context, this); } @Override @@ -85,6 +89,7 @@ public class EnabledNetworkModePreferenceController extends @OnLifecycleEvent(ON_START) public void onStart() { + mSubscriptionsListener.start(); if (mAllowedNetworkTypesListener == null) { return; } @@ -93,6 +98,7 @@ public class EnabledNetworkModePreferenceController extends @OnLifecycleEvent(ON_STOP) public void onStop() { + mSubscriptionsListener.stop(); if (mAllowedNetworkTypesListener == null) { return; } @@ -196,11 +202,14 @@ public class EnabledNetworkModePreferenceController extends PreferenceEntriesBuilder(Context context, int subId) { this.mContext = context; this.mSubId = subId; - mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class); mTelephonyManager = mContext.getSystemService(TelephonyManager.class) .createForSubscriptionId(mSubId); + updateConfig(); + } + public void updateConfig() { + mTelephonyManager = mTelephonyManager.createForSubscriptionId(mSubId); final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId); mAllowed5gNetworkType = checkSupportedRadioBitmask( mTelephonyManager.getAllowedNetworkTypesForReason( @@ -214,6 +223,11 @@ public class EnabledNetworkModePreferenceController extends && carrierConfig.getBoolean(CarrierConfigManager.KEY_SHOW_CDMA_CHOICES_BOOL); mShow4gForLTE = carrierConfig != null && carrierConfig.getBoolean( CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL); + Log.d(LOG_TAG, "PreferenceEntriesBuilder: subId" + mSubId + + ",Supported5gRadioAccessFamily :" + mSupported5gRadioAccessFamily + + ",mAllowed5gNetworkType :" + mAllowed5gNetworkType + + ",IsGlobalCdma :" + mIsGlobalCdma + + ",Show4gForLTE :" + mShow4gForLTE); } void setPreferenceEntries() { @@ -818,4 +832,13 @@ public class EnabledNetworkModePreferenceController extends } } + + @Override + public void onAirplaneModeChanged(boolean airplaneModeEnabled) { + } + + @Override + public void onSubscriptionsChanged() { + mBuilder.updateConfig(); + } }