diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 14861c2ddf4c4..48f97882dc574 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -22120,7 +22120,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; @@ -22132,9 +22133,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())); }