[Settings] Fix crash and UI error when turn ON/OFF SIM
1. Should update the UI when turn off SIM
2. Fix ConcurrentModificationException
Bug: 259487637
Test: manual
Change-Id: If30a6b6323ac0237c92dc210bf3953ce86a199ae
diff --git a/src/com/android/settings/network/MobileNetworkRepository.java b/src/com/android/settings/network/MobileNetworkRepository.java
index 5de4c72..42f15c8 100644
--- a/src/com/android/settings/network/MobileNetworkRepository.java
+++ b/src/com/android/settings/network/MobileNetworkRepository.java
@@ -264,8 +264,7 @@
mIsActive = portInfo.isActive();
mPortIndex = portInfo.getPortIndex();
} else if (DEBUG) {
- Log.d(TAG,
- "Can not get port index and physicalSlotIndex for subId "
+ Log.d(TAG, "Can not get port index and physicalSlotIndex for subId "
+ mSubId);
}
});
@@ -297,8 +296,7 @@
setActiveSubInfoList(mActiveSubInfoEntityList);
}
- private void setActiveSubInfoList(
- List<SubscriptionInfoEntity> activeSubInfoEntityList) {
+ private void setActiveSubInfoList(List<SubscriptionInfoEntity> activeSubInfoEntityList) {
if (DEBUG) {
Log.d(TAG,
"onActiveSubInfoChanged, activeSubInfoEntityList = " + activeSubInfoEntityList);
@@ -460,11 +458,16 @@
if (DEBUG) {
Log.d(TAG, "availableSudInfoList from framework is empty, remove all subs");
}
- for (SubscriptionInfoEntity info : mAvailableSubInfoEntityList) {
+
+ SubscriptionInfoEntity[] availableInfoArray = mAvailableSubInfoEntityList.toArray(
+ new SubscriptionInfoEntity[0]);
+ for (SubscriptionInfoEntity info : availableInfoArray) {
deleteAllInfoBySubId(info.subId);
}
+
} else if (availableInfoList != null) {
- for (SubscriptionInfo subInfo : availableInfoList) {
+ SubscriptionInfo[] infoArray = availableInfoList.toArray(new SubscriptionInfo[0]);
+ for (SubscriptionInfo subInfo : infoArray) {
mSubscriptionInfoMap.remove(subInfo.getSubscriptionId());
if (DEBUG) {
Log.d(TAG,
diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
index 88c3656..60f35cd 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
@@ -464,10 +464,6 @@
@Override
public void onAvailableSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
- }
-
- @Override
- public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
if (DataServiceUtils.shouldUpdateEntityList(mSubInfoEntityList, subInfoEntityList)) {
// Check the current subId is existed or not, if so, finish it.
@@ -500,6 +496,10 @@
}
@Override
+ public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
+ }
+
+ @Override
public void onAllUiccInfoChanged(List<UiccInfoEntity> uiccInfoEntityList) {
}