Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b1facd20 authored by Jordan Liu's avatar Jordan Liu
Browse files

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
parent 5b7535d5
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -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()