Enable roaming feature when the mcc is not the same

Bug: 312128461
Test: Manual(pass)
Test: atest CellBroadcastReceiverOemUnitTests

Change-Id: I1294d57a0f57479ce47c27a889b74710c2e6a1a1
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
index b39ebbf..e8b55fe 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
@@ -272,8 +272,14 @@
                             roamingOperator = networkOperator;
                             break;
                         } else if (r.equals("XXX")) {
-                            //match any roaming network, only store mcc
-                            roamingOperator = networkOperator.substring(0, 3);
+                            if (tm.getSimOperator() != null) {
+                                String networkMcc = networkOperator.substring(0, 3);
+                                // empty sim case or inserted sim but different mcc case
+                                if (!tm.getSimOperator().startsWith(networkMcc)) {
+                                    //match any roaming network, only store mcc
+                                    roamingOperator = networkMcc;
+                                }
+                            }
                             break;
                         } else if (networkOperator.startsWith(r)) {
                             roamingOperator = r;
diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java
index 5c444b6..10ae3ad 100644
--- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java
+++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java
@@ -649,6 +649,18 @@
         verify(mCellBroadcastReceiver, times(6)).startConfigServiceToEnableChannels();
         assertThat(mFakeSharedPreferences.getString(
                 "roaming_operator_supported", "321")).isEqualTo("");
+
+        // roaming to network operator with different mcc and configured as any mcc match,
+        // verify to update the network operator, and call enable channel
+        doReturn("310240").when(mMockTelephonyManager).getNetworkOperator();
+        doReturn("310260").when(mMockTelephonyManager).getSimOperator();
+        doReturn(new String[] {"XXX"}).when(mResources).getStringArray(anyInt());
+
+        mCellBroadcastReceiver.onReceive(mContext, mIntent);
+
+        verify(mCellBroadcastReceiver, times(6)).startConfigServiceToEnableChannels();
+        assertThat(mFakeSharedPreferences.getString(
+                "roaming_operator_supported", "")).isEqualTo("");
     }
 
     @Test