Clean cherry-pick 'Aggregate network operators by PLMNs instead of Operator names.'
Bug: 111044709
Test: Manual test
Change-Id: I433f3d1d74feef5188bf4ad26e4027df77639ea5
Merged-In: I433f3d1d74feef5188bf4ad26e4027df77639ea5
diff --git a/src/com/android/phone/NetworkSelectListPreference.java b/src/com/android/phone/NetworkSelectListPreference.java
index 5b31b68..3cb4155 100644
--- a/src/com/android/phone/NetworkSelectListPreference.java
+++ b/src/com/android/phone/NetworkSelectListPreference.java
@@ -335,14 +335,12 @@
for (CellInfo cellInfo: mCellInfoList) {
// Display each operator name only once.
String networkTitle = getNetworkTitle(cellInfo);
- if (!networkEntriesList.contains(networkTitle)) {
- if (CellInfoUtil.isForbidden(cellInfo, mForbiddenPlmns)) {
- networkTitle += " "
- + getContext().getResources().getString(R.string.forbidden_network);
- }
- networkEntriesList.add(networkTitle);
- networkEntryValuesList.add(getOperatorNumeric(cellInfo));
+ if (CellInfoUtil.isForbidden(cellInfo, mForbiddenPlmns)) {
+ networkTitle += " "
+ + getContext().getResources().getString(R.string.forbidden_network);
}
+ networkEntriesList.add(networkTitle);
+ networkEntryValuesList.add(getOperatorNumeric(cellInfo));
}
setEntries(networkEntriesList.toArray(new CharSequence[networkEntriesList.size()]));
setEntryValues(networkEntryValuesList.toArray(
diff --git a/src/com/android/phone/NetworkSelectSetting.java b/src/com/android/phone/NetworkSelectSetting.java
index 71162bb..96e4a26 100644
--- a/src/com/android/phone/NetworkSelectSetting.java
+++ b/src/com/android/phone/NetworkSelectSetting.java
@@ -555,18 +555,18 @@
if (DBG) logd("before aggregate: " + cellInfoList.toString());
Map<String, CellInfo> map = new HashMap<>();
for (CellInfo cellInfo: cellInfoList) {
- String networkTitle = CellInfoUtil.getNetworkTitle(cellInfo);
- if (cellInfo.isRegistered() || !map.containsKey(networkTitle)) {
- map.put(networkTitle, cellInfo);
+ String plmn = CellInfoUtil.getOperatorInfoFromCellInfo(cellInfo).getOperatorNumeric();
+ if (cellInfo.isRegistered() || !map.containsKey(plmn)) {
+ map.put(plmn, cellInfo);
} else {
- if (map.get(networkTitle).isRegistered()
- || CellInfoUtil.getLevel(map.get(networkTitle))
+ if (map.get(plmn).isRegistered()
+ || CellInfoUtil.getLevel(map.get(plmn))
> CellInfoUtil.getLevel(cellInfo)) {
// Skip if the stored cellInfo is registered or has higher signal strength level
continue;
}
// Otherwise replace it with the new CellInfo
- map.put(networkTitle, cellInfo);
+ map.put(plmn, cellInfo);
}
}
return new ArrayList<>(map.values());