Refresh subscription info when subid changes

We store the initial subId and check if it has changed so that we always
have the updated subscription info in fillList().

Fixes: 111731641
Test: manually verify that swapping the SIM loads new APNs
Change-Id: I3475915f2c380fb67b2e56436423d491e489d91e
This commit is contained in:
Jordan Liu
2018-08-14 16:52:07 -07:00
parent 5b7535d5b4
commit b1facd2001

View File

@@ -104,6 +104,7 @@ public class ApnSettings extends RestrictedSettingsFragment implements
private RestoreApnProcessHandler mRestoreApnProcessHandler; private RestoreApnProcessHandler mRestoreApnProcessHandler;
private HandlerThread mRestoreDefaultApnThread; private HandlerThread mRestoreDefaultApnThread;
private SubscriptionInfo mSubscriptionInfo; private SubscriptionInfo mSubscriptionInfo;
private int mSubId;
private UiccController mUiccController; private UiccController mUiccController;
private String mMvnoType; private String mMvnoType;
private String mMvnoMatchData; private String mMvnoMatchData;
@@ -139,6 +140,13 @@ public class ApnSettings extends RestrictedSettingsFragment implements
} else if(intent.getAction().equals( } else if(intent.getAction().equals(
TelephonyManager.ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED)) { TelephonyManager.ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED)) {
if (!mRestoreDefaultApnMode) { if (!mRestoreDefaultApnMode) {
int extraSubId = intent.getIntExtra(TelephonyManager.EXTRA_SUBSCRIPTION_ID,
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
if (extraSubId != mSubId) {
// subscription has changed
mSubId = extraSubId;
mSubscriptionInfo = getSubscriptionInfo(mSubId);
}
fillList(); fillList();
} }
} }
@@ -163,7 +171,7 @@ public class ApnSettings extends RestrictedSettingsFragment implements
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
final Activity activity = getActivity(); final Activity activity = getActivity();
final int subId = activity.getIntent().getIntExtra(SUB_ID, mSubId = activity.getIntent().getIntExtra(SUB_ID,
SubscriptionManager.INVALID_SUBSCRIPTION_ID); SubscriptionManager.INVALID_SUBSCRIPTION_ID);
mIntentFilter = new IntentFilter( mIntentFilter = new IntentFilter(
@@ -172,7 +180,7 @@ public class ApnSettings extends RestrictedSettingsFragment implements
setIfOnlyAvailableForAdmins(true); setIfOnlyAvailableForAdmins(true);
mSubscriptionInfo = SubscriptionManager.from(activity).getActiveSubscriptionInfo(subId); mSubscriptionInfo = getSubscriptionInfo(mSubId);
mUiccController = UiccController.getInstance(); mUiccController = UiccController.getInstance();
CarrierConfigManager configManager = (CarrierConfigManager) CarrierConfigManager configManager = (CarrierConfigManager)
@@ -253,6 +261,10 @@ public class ApnSettings extends RestrictedSettingsFragment implements
return null; return null;
} }
private SubscriptionInfo getSubscriptionInfo(int subId) {
return SubscriptionManager.from(getActivity()).getActiveSubscriptionInfo(subId);
}
private void fillList() { private void fillList() {
final TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); final TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
final int subId = mSubscriptionInfo != null ? mSubscriptionInfo.getSubscriptionId() final int subId = mSubscriptionInfo != null ? mSubscriptionInfo.getSubscriptionId()