diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/Settings.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 451b3a5256ac..397a841db604 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(); |