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
Merged-In: I29492ef016c8ca9836ecf28c787e441629cfecb0
diff --git a/src/com/android/settings/network/ApnSettings.java b/src/com/android/settings/network/ApnSettings.java
index bbbcdbc..09d4f50 100755
--- a/src/com/android/settings/network/ApnSettings.java
+++ b/src/com/android/settings/network/ApnSettings.java
@@ -103,6 +103,7 @@
private RestoreApnProcessHandler mRestoreApnProcessHandler;
private HandlerThread mRestoreDefaultApnThread;
private SubscriptionInfo mSubscriptionInfo;
+ private int mSubId;
private UiccController mUiccController;
private String mMvnoType;
private String mMvnoMatchData;
@@ -135,6 +136,18 @@
}
break;
}
+ } 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();
+ }
}
}
};
@@ -157,7 +170,7 @@
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);
mMobileStateFilter = new IntentFilter(
@@ -165,7 +178,7 @@
setIfOnlyAvailableForAdmins(true);
- mSubscriptionInfo = SubscriptionManager.from(activity).getActiveSubscriptionInfo(subId);
+ mSubscriptionInfo = getSubscriptionInfo(mSubId);
mUiccController = UiccController.getInstance();
CarrierConfigManager configManager = (CarrierConfigManager)
@@ -246,6 +259,10 @@
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()