diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index e341e0c19cf5f..246429aae25b9 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -12321,23 +12321,15 @@ public class TelephonyManager { @NonNull public Map> getEmergencyNumberList( @EmergencyServiceCategories int categories) { - Map> emergencyNumberList = new HashMap<>(); + Map> emergencyNumberListForCategories = new HashMap<>(); try { ITelephony telephony = getITelephony(); if (telephony != null) { - emergencyNumberList = telephony.getEmergencyNumberList( - mContext.getOpPackageName(), mContext.getAttributionTag()); - if (emergencyNumberList != null) { - for (Integer subscriptionId : emergencyNumberList.keySet()) { - List numberList = emergencyNumberList.get(subscriptionId); - for (EmergencyNumber number : numberList) { - if (!number.isInEmergencyServiceCategories(categories)) { - numberList.remove(number); - } - } - } - } - return emergencyNumberList; + Map> emergencyNumberList = + telephony.getEmergencyNumberList(mContext.getOpPackageName(), + mContext.getAttributionTag()); + emergencyNumberListForCategories = + filterEmergencyNumbersByCategories(emergencyNumberList, categories); } else { throw new IllegalStateException("telephony service is null."); } @@ -12345,7 +12337,34 @@ public class TelephonyManager { Log.e(TAG, "getEmergencyNumberList with Categories RemoteException", ex); ex.rethrowAsRuntimeException(); } - return emergencyNumberList; + return emergencyNumberListForCategories; + } + + /** + * Filter emergency numbers with categories. + * + * @hide + */ + @VisibleForTesting + public Map> filterEmergencyNumbersByCategories( + Map> emergencyNumberList, + @EmergencyServiceCategories int categories) { + Map> emergencyNumberListForCategories = new HashMap<>(); + if (emergencyNumberList != null) { + 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); + } + } + emergencyNumberListForCategories.put( + subscriptionId, numbersForCategoriesPerSub); + } + } + return emergencyNumberListForCategories; } /**