diff --git a/packages/SettingsLib/EmergencyNumber/src/com/android/settingslib/emergencynumber/EmergencyNumberUtils.java b/packages/SettingsLib/EmergencyNumber/src/com/android/settingslib/emergencynumber/EmergencyNumberUtils.java index 12d21cae48d4e..1c0e718a17b20 100644 --- a/packages/SettingsLib/EmergencyNumber/src/com/android/settingslib/emergencynumber/EmergencyNumberUtils.java +++ b/packages/SettingsLib/EmergencyNumber/src/com/android/settingslib/emergencynumber/EmergencyNumberUtils.java @@ -84,8 +84,9 @@ public class EmergencyNumberUtils { } private List getPromotedEmergencyNumbers(int categories) { - Map> allLists = mTelephonyManager.getEmergencyNumberList( - categories); + // TODO(b/171542607): Use platform API when its bug is fixed. + Map> 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> filterEmergencyNumbersByCategories( + Map> emergencyNumberList, int categories) { + Map> filteredMap = new ArrayMap<>(); + if (emergencyNumberList == null) { + return filteredMap; + } + for (Integer subscriptionId : emergencyNumberList.keySet()) { + List allNumbersForSub = emergencyNumberList.get( + subscriptionId); + List numbersForCategoriesPerSub = new ArrayList<>(); + for (EmergencyNumber number : allNumbersForSub) { + if (number.isInEmergencyServiceCategories(categories)) { + numbersForCategoriesPerSub.add(number); + } + } + filteredMap.put( + subscriptionId, numbersForCategoriesPerSub); + } + return filteredMap; + } }