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
This commit is contained in:
SongFerngWang
2021-02-19 20:57:30 +08:00
parent e74e93b31e
commit f3b21931a5

View File

@@ -35,6 +35,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.network.AllowedNetworkTypesListener; import com.android.settings.network.AllowedNetworkTypesListener;
import com.android.settings.network.SubscriptionsChangeListener;
import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants; import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
import java.util.ArrayList; import java.util.ArrayList;
@@ -47,7 +48,8 @@ import java.util.stream.Stream;
*/ */
public class EnabledNetworkModePreferenceController extends public class EnabledNetworkModePreferenceController extends
TelephonyBasePreferenceController implements TelephonyBasePreferenceController implements
ListPreference.OnPreferenceChangeListener, LifecycleObserver { ListPreference.OnPreferenceChangeListener, LifecycleObserver,
SubscriptionsChangeListener.SubscriptionsChangeListenerClient {
private static final String LOG_TAG = "EnabledNetworkMode"; private static final String LOG_TAG = "EnabledNetworkMode";
private AllowedNetworkTypesListener mAllowedNetworkTypesListener; private AllowedNetworkTypesListener mAllowedNetworkTypesListener;
@@ -56,9 +58,11 @@ public class EnabledNetworkModePreferenceController extends
private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager;
private CarrierConfigManager mCarrierConfigManager; private CarrierConfigManager mCarrierConfigManager;
private PreferenceEntriesBuilder mBuilder; private PreferenceEntriesBuilder mBuilder;
private SubscriptionsChangeListener mSubscriptionsListener;
public EnabledNetworkModePreferenceController(Context context, String key) { public EnabledNetworkModePreferenceController(Context context, String key) {
super(context, key); super(context, key);
mSubscriptionsListener = new SubscriptionsChangeListener(context, this);
} }
@Override @Override
@@ -85,6 +89,7 @@ public class EnabledNetworkModePreferenceController extends
@OnLifecycleEvent(ON_START) @OnLifecycleEvent(ON_START)
public void onStart() { public void onStart() {
mSubscriptionsListener.start();
if (mAllowedNetworkTypesListener == null) { if (mAllowedNetworkTypesListener == null) {
return; return;
} }
@@ -93,6 +98,7 @@ public class EnabledNetworkModePreferenceController extends
@OnLifecycleEvent(ON_STOP) @OnLifecycleEvent(ON_STOP)
public void onStop() { public void onStop() {
mSubscriptionsListener.stop();
if (mAllowedNetworkTypesListener == null) { if (mAllowedNetworkTypesListener == null) {
return; return;
} }
@@ -196,11 +202,14 @@ public class EnabledNetworkModePreferenceController extends
PreferenceEntriesBuilder(Context context, int subId) { PreferenceEntriesBuilder(Context context, int subId) {
this.mContext = context; this.mContext = context;
this.mSubId = subId; this.mSubId = subId;
mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class); mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class);
mTelephonyManager = mContext.getSystemService(TelephonyManager.class) mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
.createForSubscriptionId(mSubId); .createForSubscriptionId(mSubId);
updateConfig();
}
public void updateConfig() {
mTelephonyManager = mTelephonyManager.createForSubscriptionId(mSubId);
final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId); final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
mAllowed5gNetworkType = checkSupportedRadioBitmask( mAllowed5gNetworkType = checkSupportedRadioBitmask(
mTelephonyManager.getAllowedNetworkTypesForReason( mTelephonyManager.getAllowedNetworkTypesForReason(
@@ -214,6 +223,11 @@ public class EnabledNetworkModePreferenceController extends
&& carrierConfig.getBoolean(CarrierConfigManager.KEY_SHOW_CDMA_CHOICES_BOOL); && carrierConfig.getBoolean(CarrierConfigManager.KEY_SHOW_CDMA_CHOICES_BOOL);
mShow4gForLTE = carrierConfig != null && carrierConfig.getBoolean( mShow4gForLTE = carrierConfig != null && carrierConfig.getBoolean(
CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL); 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() { void setPreferenceEntries() {
@@ -818,4 +832,13 @@ public class EnabledNetworkModePreferenceController extends
} }
} }
@Override
public void onAirplaneModeChanged(boolean airplaneModeEnabled) {
}
@Override
public void onSubscriptionsChanged() {
mBuilder.updateConfig();
}
} }