diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 451b3a5256ac34dfcaf7d2cb615d182d31804752..397a841db6049b6208155448f45f8df6ec538a05 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -6411,16 +6411,25 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile } boolean clearPersistentPreferredActivity(IntentFilter filter, int userId) { + ArrayList<PersistentPreferredActivity> removed = null; PersistentPreferredIntentResolver ppir = mPersistentPreferredActivities.get(userId); Iterator<PersistentPreferredActivity> it = ppir.filterIterator(); boolean changed = false; while (it.hasNext()) { PersistentPreferredActivity ppa = it.next(); if (IntentFilter.filterEquals(ppa.getIntentFilter(), filter)) { + if (removed == null) { + removed = new ArrayList<>(); + } + removed.add(ppa); + } + } + if (removed != null) { + for (int i = 0; i < removed.size(); i++) { + PersistentPreferredActivity ppa = removed.get(i); ppir.removeFilter(ppa); - changed = true; - break; } + changed = true; } if (changed) { onChanged();