diff --git a/src/com/android/settings/network/ApnSettings.java b/src/com/android/settings/network/ApnSettings.java index 4661f4e6cc4..25734d64173 100755 --- a/src/com/android/settings/network/ApnSettings.java +++ b/src/com/android/settings/network/ApnSettings.java @@ -105,6 +105,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; @@ -140,6 +141,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(); } } @@ -164,7 +172,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( @@ -173,7 +181,7 @@ public class ApnSettings extends RestrictedSettingsFragment implements setIfOnlyAvailableForAdmins(true); - mSubscriptionInfo = SubscriptionManager.from(activity).getActiveSubscriptionInfo(subId); + mSubscriptionInfo = getSubscriptionInfo(mSubId); mUiccController = UiccController.getInstance(); CarrierConfigManager configManager = (CarrierConfigManager) @@ -254,6 +262,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()