diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 20 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/Settings.java | 24 |
2 files changed, 24 insertions, 20 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index bf01fd314207..e2a7e3d2ba02 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -19885,7 +19885,7 @@ public class PackageManagerService extends IPackageManager.Stub final PreferredIntentResolver pir = mSettings.editPreferredActivitiesLPw(userId); final ArrayList<PreferredActivity> existing = pir.findFilters(filter); if (removeExisting && existing != null) { - removeFiltersLocked(pir, filter, existing); + mSettings.removeFiltersLPw(pir, filter, existing); } pir.addFilter(new PreferredActivity(filter, match, set, activity, always)); scheduleWritePackageRestrictionsLocked(userId); @@ -19986,7 +19986,7 @@ public class PackageManagerService extends IPackageManager.Stub } } if (existing != null) { - removeFiltersLocked(pir, filter, existing); + mSettings.removeFiltersLPw(pir, filter, existing); } } } @@ -19994,22 +19994,6 @@ public class PackageManagerService extends IPackageManager.Stub "Replacing preferred", false); } - private void removeFiltersLocked(@NonNull PreferredIntentResolver pir, - @NonNull IntentFilter filter, @NonNull List<PreferredActivity> existing) { - if (DEBUG_PREFERRED) { - Slog.i(TAG, existing.size() + " preferred matches for:"); - filter.dump(new LogPrinter(Log.INFO, TAG), " "); - } - for (int i = existing.size() - 1; i >= 0; --i) { - final PreferredActivity pa = existing.get(i); - if (DEBUG_PREFERRED) { - Slog.i(TAG, "Removing preferred activity " + pa.mPref.mComponent + ":"); - pa.dump(new LogPrinter(Log.INFO, TAG), " "); - } - pir.removeFilter(pa); - } - } - @Override public void clearPackagePreferredActivities(String packageName) { final int callingUid = Binder.getCallingUid(); diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 659e2a32e267..bd8d0c820c5c 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -102,7 +102,6 @@ import com.android.internal.util.XmlUtils; import com.android.permission.persistence.RuntimePermissionsPersistence; import com.android.permission.persistence.RuntimePermissionsState; import com.android.server.LocalServices; -import com.android.server.pm.Installer.Batch; import com.android.server.pm.Installer.InstallerException; import com.android.server.pm.parsing.PackageInfoUtils; import com.android.server.pm.parsing.pkg.AndroidPackage; @@ -3192,6 +3191,22 @@ public final class Settings { } } + void removeFiltersLPw(@NonNull PreferredIntentResolver pir, + @NonNull IntentFilter filter, @NonNull List<PreferredActivity> existing) { + if (PackageManagerService.DEBUG_PREFERRED) { + Slog.i(TAG, existing.size() + " preferred matches for:"); + filter.dump(new LogPrinter(Log.INFO, TAG), " "); + } + for (int i = existing.size() - 1; i >= 0; --i) { + final PreferredActivity pa = existing.get(i); + if (PackageManagerService.DEBUG_PREFERRED) { + Slog.i(TAG, "Removing preferred activity " + pa.mPref.mComponent + ":"); + pa.dump(new LogPrinter(Log.INFO, TAG), " "); + } + pir.removeFilter(pa); + } + } + private void applyDefaultPreferredActivityLPw( PackageManagerInternal pmInternal, IntentFilter tmpPa, ComponentName cn, int userId) { // The initial preferences only specify the target activity @@ -3395,8 +3410,13 @@ public final class Settings { Slog.w(TAG, "Malformed mimetype " + intent.getType() + " for " + cn); } } + final PreferredIntentResolver pir = editPreferredActivitiesLPw(userId); + final List<PreferredActivity> existing = pir.findFilters(filter); + if (existing != null) { + removeFiltersLPw(pir, filter, existing); + } PreferredActivity pa = new PreferredActivity(filter, systemMatch, set, cn, true); - editPreferredActivitiesLPw(userId).addFilter(pa); + pir.addFilter(pa); } else if (haveNonSys == null) { StringBuilder sb = new StringBuilder(); sb.append("No component "); |