Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f2b1d840 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix ConcurrentModificationException getting emergency nums"

parents 6ea899bb ac4d7406
Loading
Loading
Loading
Loading
+27 −2
Original line number Diff line number Diff line
@@ -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;
    }
}