In sim1 APN settings interface and hot plug out/in sim2, APN information change to sim2's
STEPS TO REPRODUCE:
1. Insert two sim into device, sim1 is CUCC, sim2 is CMCC
2. Goto Settings-Network & Internet-sim1-MobileNetworkSettings-Access Point Names. It shows CUCC APN information
3. Hot plug out sim2
4. Hot plug in sim2, APN information changes to CMCC APN information
EXPECTED RESULTS:
When hot plug out/in sim2, sim1 APN settings interface should still keep its APN information instead of changing to sim2 APN information
Change-Id: I04c769f60ba1686b2c9bebcd07e3a04685979442
Bug: 141087659
Test:In sim1 APN settings interface, hot plug out/in sim2, it shows sim1 APN information all the time, test pass.
diff --git a/src/com/android/settings/network/ApnSettings.java b/src/com/android/settings/network/ApnSettings.java
index f0603bb..137abadf 100755
--- a/src/com/android/settings/network/ApnSettings.java
+++ b/src/com/android/settings/network/ApnSettings.java
@@ -113,6 +113,7 @@
private HandlerThread mRestoreDefaultApnThread;
private SubscriptionInfo mSubscriptionInfo;
private int mSubId;
+ private int mPhoneId;
private UiccController mUiccController;
private String mMvnoType;
private String mMvnoMatchData;
@@ -151,7 +152,9 @@
if (!mRestoreDefaultApnMode) {
int extraSubId = intent.getIntExtra(TelephonyManager.EXTRA_SUBSCRIPTION_ID,
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
- if (extraSubId != mSubId) {
+ if (SubscriptionManager.isValidSubscriptionId(extraSubId) &&
+ mPhoneId == SubscriptionManager.getPhoneId(extraSubId) &&
+ extraSubId != mSubId) {
// subscription has changed
mSubId = extraSubId;
mSubscriptionInfo = getSubscriptionInfo(mSubId);
@@ -182,7 +185,7 @@
final Activity activity = getActivity();
mSubId = activity.getIntent().getIntExtra(SUB_ID,
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-
+ mPhoneId = SubscriptionManager.getPhoneId(mSubId);
mIntentFilter = new IntentFilter(
TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED);
mIntentFilter.addAction(TelephonyManager.ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED);