Merge "Fix ConcurrentModificationException of getEmergencyNumberList"
This commit is contained in:
@@ -12300,23 +12300,15 @@ public class TelephonyManager {
|
||||
@NonNull
|
||||
public Map<Integer, List<EmergencyNumber>> getEmergencyNumberList(
|
||||
@EmergencyServiceCategories int categories) {
|
||||
Map<Integer, List<EmergencyNumber>> emergencyNumberList = new HashMap<>();
|
||||
Map<Integer, List<EmergencyNumber>> 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<EmergencyNumber> numberList = emergencyNumberList.get(subscriptionId);
|
||||
for (EmergencyNumber number : numberList) {
|
||||
if (!number.isInEmergencyServiceCategories(categories)) {
|
||||
numberList.remove(number);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return emergencyNumberList;
|
||||
Map<Integer, List<EmergencyNumber>> emergencyNumberList =
|
||||
telephony.getEmergencyNumberList(mContext.getOpPackageName(),
|
||||
mContext.getAttributionTag());
|
||||
emergencyNumberListForCategories =
|
||||
filterEmergencyNumbersByCategories(emergencyNumberList, categories);
|
||||
} else {
|
||||
throw new IllegalStateException("telephony service is null.");
|
||||
}
|
||||
@@ -12324,7 +12316,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<Integer, List<EmergencyNumber>> filterEmergencyNumbersByCategories(
|
||||
Map<Integer, List<EmergencyNumber>> emergencyNumberList,
|
||||
@EmergencyServiceCategories int categories) {
|
||||
Map<Integer, List<EmergencyNumber>> emergencyNumberListForCategories = new HashMap<>();
|
||||
if (emergencyNumberList != null) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
emergencyNumberListForCategories.put(
|
||||
subscriptionId, numbersForCategoriesPerSub);
|
||||
}
|
||||
}
|
||||
return emergencyNumberListForCategories;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user