diff --git a/src/java/com/android/internal/telephony/uicc/UiccController.java b/src/java/com/android/internal/telephony/uicc/UiccController.java
index 36cad5f..fb64b6a 100644
--- a/src/java/com/android/internal/telephony/uicc/UiccController.java
+++ b/src/java/com/android/internal/telephony/uicc/UiccController.java
@@ -1103,12 +1103,16 @@
                 options.toBundle());
     }
 
-    private boolean slotStatusChanged(ArrayList<IccSlotStatus> slotStatusList) {
+    /**
+     * Check if slot status has changed from the last received one
+     */
+    @VisibleForTesting
+    public boolean slotStatusChanged(ArrayList<IccSlotStatus> slotStatusList) {
         if (sLastSlotStatus == null || sLastSlotStatus.size() != slotStatusList.size()) {
             return true;
         }
-        for (IccSlotStatus iccSlotStatus : slotStatusList) {
-            if (!sLastSlotStatus.contains(iccSlotStatus)) {
+        for (int i = 0; i < slotStatusList.size(); i++) {
+            if (!sLastSlotStatus.get(i).equals(slotStatusList.get(i))) {
                 return true;
             }
         }
diff --git a/tests/telephonytests/src/com/android/internal/telephony/ContextFixture.java b/tests/telephonytests/src/com/android/internal/telephony/ContextFixture.java
index f04e69f..14f5aa1 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/ContextFixture.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/ContextFixture.java
@@ -424,6 +424,12 @@
         }
 
         @Override
+        public void sendBroadcast(Intent intent, String receiverPermission, Bundle initialExtras) {
+            logd("sendBroadcast called for " + intent.getAction());
+            sendBroadcast(intent);
+        }
+
+        @Override
         public void sendOrderedBroadcast(Intent intent, String receiverPermission) {
             logd("sendOrderedBroadcast called for " + intent.getAction());
             sendBroadcast(intent);
diff --git a/tests/telephonytests/src/com/android/internal/telephony/uicc/UiccControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/uicc/UiccControllerTest.java
index c9fccaf..a00e110 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/uicc/UiccControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/uicc/UiccControllerTest.java
@@ -18,6 +18,7 @@
 import static junit.framework.Assert.fail;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
@@ -634,4 +635,32 @@
         assertEquals(mUiccControllerUT.convertToPublicCardId(knownEidFromApdu),
                 mUiccControllerUT.getCardIdForDefaultEuicc());
     }
+
+    @Test
+    public void testSlotStatusChanged() {
+        // simulate slot status loaded so that the UiccController sets the last slot status
+        IccSlotStatus iss1 = new IccSlotStatus();
+        iss1.setSlotState(1 /* active */);
+        iss1.eid = "eid1";
+        IccSlotStatus iss2 = new IccSlotStatus();
+        iss2.setSlotState(1 /* active */);
+        iss2.eid = "eid2";
+        ArrayList<IccSlotStatus> status = new ArrayList<IccSlotStatus>();
+        status.add(iss1);
+        status.add(iss2);
+        AsyncResult ar = new AsyncResult(null, status, null);
+        Message msg = Message.obtain(mUiccControllerUT, EVENT_GET_SLOT_STATUS_DONE, ar);
+        mUiccControllerUT.handleMessage(msg);
+        processAllMessages();
+
+        assertFalse(mUiccControllerUT.slotStatusChanged(status));
+
+        // change the order of the IccSlotStatus in the list
+        status = new ArrayList<>();
+        status.add(iss2);
+        status.add(iss1);
+
+        // status should be treated different from last status
+        assertTrue(mUiccControllerUT.slotStatusChanged(status));
+    }
 }
