diff --git a/src/com/android/settings/network/ApnSettings.java b/src/com/android/settings/network/ApnSettings.java index ff4e8fb4125..288cccbe2b0 100755 --- a/src/com/android/settings/network/ApnSettings.java +++ b/src/com/android/settings/network/ApnSettings.java @@ -104,6 +104,7 @@ public class ApnSettings extends RestrictedSettingsFragment implements private RestoreApnProcessHandler mRestoreApnProcessHandler; private HandlerThread mRestoreDefaultApnThread; private SubscriptionInfo mSubscriptionInfo; + private int mSubId; private UiccController mUiccController; private String mMvnoType; private String mMvnoMatchData; @@ -139,6 +140,13 @@ public class ApnSettings extends RestrictedSettingsFragment implements } else if(intent.getAction().equals( TelephonyManager.ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED)) { 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(); } } @@ -163,7 +171,7 @@ public class ApnSettings extends RestrictedSettingsFragment implements public void onCreate(Bundle icicle) { super.onCreate(icicle); final Activity activity = getActivity(); - final int subId = activity.getIntent().getIntExtra(SUB_ID, + mSubId = activity.getIntent().getIntExtra(SUB_ID, SubscriptionManager.INVALID_SUBSCRIPTION_ID); mIntentFilter = new IntentFilter( @@ -172,7 +180,7 @@ public class ApnSettings extends RestrictedSettingsFragment implements setIfOnlyAvailableForAdmins(true); - mSubscriptionInfo = SubscriptionManager.from(activity).getActiveSubscriptionInfo(subId); + mSubscriptionInfo = getSubscriptionInfo(mSubId); mUiccController = UiccController.getInstance(); CarrierConfigManager configManager = (CarrierConfigManager) @@ -253,6 +261,10 @@ public class ApnSettings extends RestrictedSettingsFragment implements return null; } + private SubscriptionInfo getSubscriptionInfo(int subId) { + return SubscriptionManager.from(getActivity()).getActiveSubscriptionInfo(subId); + } + private void fillList() { final TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); final int subId = mSubscriptionInfo != null ? mSubscriptionInfo.getSubscriptionId()