diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 2f8ba6da89a30..99e023e77323f 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -22726,7 +22726,8 @@ public class PackageManagerService extends IPackageManager.Stub */ public int getPreferredActivitiesInternal(List outFilters, List outActivities, String packageName) { - if (getInstantAppPackageName(Binder.getCallingUid()) != null) { + final int callingUid = Binder.getCallingUid(); + if (getInstantAppPackageName(callingUid) != null) { return 0; } int num = 0; @@ -22738,9 +22739,13 @@ public class PackageManagerService extends IPackageManager.Stub final Iterator it = pir.filterIterator(); while (it.hasNext()) { final PreferredActivity pa = it.next(); + final String prefPackageName = pa.mPref.mComponent.getPackageName(); if (packageName == null - || (pa.mPref.mComponent.getPackageName().equals(packageName) - && pa.mPref.mAlways)) { + || (prefPackageName.equals(packageName) && pa.mPref.mAlways)) { + if (shouldFilterApplicationLocked( + mSettings.getPackageLPr(prefPackageName), callingUid, userId)) { + continue; + } if (outFilters != null) { outFilters.add(new WatchedIntentFilter(pa.getIntentFilter())); }