Merge "Fix ConcurrentModificationException getting emergency nums"

This commit is contained in:
TreeHugger Robot
2020-12-07 03:55:56 +00:00
committed by Android (Google) Code Review

View File

@@ -84,8 +84,9 @@ public class EmergencyNumberUtils {
}
private List<EmergencyNumber> getPromotedEmergencyNumbers(int categories) {
Map<Integer, List<EmergencyNumber>> allLists = mTelephonyManager.getEmergencyNumberList(
categories);
// TODO(b/171542607): Use platform API when its bug is fixed.
Map<Integer, List<EmergencyNumber>> allLists = filterEmergencyNumbersByCategories(
mTelephonyManager.getEmergencyNumberList(), categories);
if (allLists == null || allLists.isEmpty()) {
Log.w(TAG, "Unable to retrieve emergency number lists!");
return new ArrayList<>();
@@ -130,4 +131,28 @@ public class EmergencyNumberUtils {
}
return promotedEmergencyNumberLists.get(SubscriptionManager.getDefaultSubscriptionId());
}
/**
* Filter emergency numbers with categories.
*/
private Map<Integer, List<EmergencyNumber>> filterEmergencyNumbersByCategories(
Map<Integer, List<EmergencyNumber>> emergencyNumberList, int categories) {
Map<Integer, List<EmergencyNumber>> filteredMap = new ArrayMap<>();
if (emergencyNumberList == null) {
return filteredMap;
}
for (Integer subscriptionId : emergencyNumberList.keySet()) {
List<EmergencyNumber> allNumbersForSub = emergencyNumberList.get(
subscriptionId);
List<EmergencyNumber> numbersForCategoriesPerSub = new ArrayList<>();
for (EmergencyNumber number : allNumbersForSub) {
if (number.isInEmergencyServiceCategories(categories)) {
numbersForCategoriesPerSub.add(number);
}
}
filteredMap.put(
subscriptionId, numbersForCategoriesPerSub);
}
return filteredMap;
}
}