To avoid the NullPointerException of UiccSlotInfo

Bug: 307599094
Test: Build pass
Change-Id: Ia3b8d29b37f2c9616856e9448c9f346b81229534
diff --git a/src/com/android/settings/network/EnableMultiSimSidecar.java b/src/com/android/settings/network/EnableMultiSimSidecar.java
index aefd55f..6bc38ef 100644
--- a/src/com/android/settings/network/EnableMultiSimSidecar.java
+++ b/src/com/android/settings/network/EnableMultiSimSidecar.java
@@ -171,8 +171,11 @@
         }
         int activePorts = 0;
         for (UiccSlotInfo slotInfo : slotsInfo) {
+            if (slotInfo == null) {
+                continue;
+            }
             for (UiccPortInfo portInfo : slotInfo.getPorts()) {
-                if (slotInfo != null && portInfo.isActive()) {
+                if (portInfo.isActive()) {
                     activePorts++;
                 }
             }
@@ -189,8 +192,11 @@
         }
         Set<Integer> activeRemovableLogicalSlotIds = new ArraySet<>();
         for (UiccSlotInfo info : infos) {
-            for (UiccPortInfo portInfo :info.getPorts()) {
-                if (info != null && portInfo.isActive() && info.isRemovable()) {
+            if (info == null) {
+                continue;
+            }
+            for (UiccPortInfo portInfo : info.getPorts()) {
+                if (portInfo.isActive() && info.isRemovable()) {
                     activeRemovableLogicalSlotIds.add(portInfo.getLogicalSlotIndex());
                 }
             }
diff --git a/src/com/android/settings/network/MobileNetworkRepository.java b/src/com/android/settings/network/MobileNetworkRepository.java
index 54c571b..f69b63f 100644
--- a/src/com/android/settings/network/MobileNetworkRepository.java
+++ b/src/com/android/settings/network/MobileNetworkRepository.java
@@ -378,11 +378,11 @@
         return mMobileNetworkInfoDao.queryMobileNetworkInfoBySubId(subId);
     }
 
-    private void getUiccInfoBySubscriptionInfo(UiccSlotInfo[] uiccSlotInfos,
+    private void getUiccInfoBySubscriptionInfo(@NonNull UiccSlotInfo[] uiccSlotInfos,
             SubscriptionInfo subInfo) {
         for (int i = 0; i < uiccSlotInfos.length; i++) {
             UiccSlotInfo curSlotInfo = uiccSlotInfos[i];
-            if (curSlotInfo.getCardStateInfo() == CARD_STATE_INFO_PRESENT) {
+            if (curSlotInfo != null && curSlotInfo.getCardStateInfo() == CARD_STATE_INFO_PRESENT) {
                 final int index = i;
                 mIsEuicc = curSlotInfo.getIsEuicc();
                 mCardState = curSlotInfo.getCardStateInfo();
diff --git a/src/com/android/settings/network/UiccSlotUtil.java b/src/com/android/settings/network/UiccSlotUtil.java
index 49a1a85..e329c74 100644
--- a/src/com/android/settings/network/UiccSlotUtil.java
+++ b/src/com/android/settings/network/UiccSlotUtil.java
@@ -301,7 +301,8 @@
         }
         if (slotId == INVALID_PHYSICAL_SLOT_ID) {
             for (int i = 0; i < slots.length; i++) {
-                if (slots[i].isRemovable()
+                if (slots[i] != null
+                        && slots[i].isRemovable()
                         && !slots[i].getIsEuicc()
                         && !slots[i].getPorts().stream().findFirst().get().isActive()
                         && slots[i].getCardStateInfo() != UiccSlotInfo.CARD_STATE_INFO_ERROR
@@ -310,8 +311,9 @@
                 }
             }
         } else {
-            if (slotId >= slots.length || !slots[slotId].isRemovable()) {
-                throw new UiccSlotsException("The given slotId is not a removable slot: " + slotId);
+            if (slotId >= slots.length || slots[slotId] == null || !slots[slotId].isRemovable()) {
+                Log.d(TAG, "The given slotId is not a removable slot: " + slotId);
+                return INVALID_PHYSICAL_SLOT_ID;
             }
             if (!slots[slotId].getPorts().stream().findFirst().get().isActive()) {
                 return slotId;