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
diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
index 9e7a3a8..5680bf6 100644
--- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
+++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
@@ -35,6 +35,7 @@
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 @@
*/
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 @@
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 @@
@OnLifecycleEvent(ON_START)
public void onStart() {
+ mSubscriptionsListener.start();
if (mAllowedNetworkTypesListener == null) {
return;
}
@@ -93,6 +98,7 @@
@OnLifecycleEvent(ON_STOP)
public void onStop() {
+ mSubscriptionsListener.stop();
if (mAllowedNetworkTypesListener == null) {
return;
}
@@ -196,11 +202,14 @@
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 @@
&& 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 @@
}
}
+
+ @Override
+ public void onAirplaneModeChanged(boolean airplaneModeEnabled) {
+ }
+
+ @Override
+ public void onSubscriptionsChanged() {
+ mBuilder.updateConfig();
+ }
}