Merge "Fix ConcurrentModificationException getting emergency nums"
This commit is contained in:
committed by
Android (Google) Code Review
commit
f2b1d84060
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user