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