diff --git a/services/core/java/com/android/server/pm/ShortcutPackage.java b/services/core/java/com/android/server/pm/ShortcutPackage.java index 890c89152a7ce..632a34e4470d4 100644 --- a/services/core/java/com/android/server/pm/ShortcutPackage.java +++ b/services/core/java/com/android/server/pm/ShortcutPackage.java @@ -885,7 +885,12 @@ class ShortcutPackage extends ShortcutPackageItem { * available ShareTarget definitions in this package. */ public List getMatchingShareTargets( - @NonNull IntentFilter filter) { + @NonNull final IntentFilter filter) { + return getMatchingShareTargets(filter, null); + } + + List getMatchingShareTargets( + @NonNull final IntentFilter filter, @Nullable final String pkgName) { synchronized (mLock) { final List matchedTargets = new ArrayList<>(); for (int i = 0; i < mShareTargets.size(); i++) { @@ -909,8 +914,7 @@ class ShortcutPackage extends ShortcutPackageItem { // included in the result findAll(shortcuts, ShortcutInfo::isNonManifestVisible, ShortcutInfo.CLONE_REMOVE_FOR_APP_PREDICTION, - mShortcutUser.mService.mContext.getPackageName(), - 0, /*getPinnedByAnyLauncher=*/ false); + pkgName, 0, /*getPinnedByAnyLauncher=*/ false); final List result = new ArrayList<>(); for (int i = 0; i < shortcuts.size(); i++) { @@ -1108,7 +1112,7 @@ class ShortcutPackage extends ShortcutPackageItem { // Now prepare to publish manifest shortcuts. List newManifestShortcutList = null; - final int shareTargetSize; + int shareTargetSize = 0; synchronized (mLock) { try { shareTargetSize = mShareTargets.size(); diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java index 0b20683185f01..49831d75db492 100644 --- a/services/core/java/com/android/server/pm/ShortcutService.java +++ b/services/core/java/com/android/server/pm/ShortcutService.java @@ -2512,11 +2512,17 @@ public class ShortcutService extends IShortcutService.Stub { } enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_APP_PREDICTIONS, "getShareTargets"); + final ComponentName chooser = injectChooserActivity(); + final String pkg = (chooser != null + && mPackageManagerInternal.getComponentEnabledSetting(chooser, + injectBinderCallingUid(), userId) == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) + ? chooser.getPackageName() : mContext.getPackageName(); synchronized (mLock) { throwIfUserLockedL(userId); final List shortcutInfoList = new ArrayList<>(); final ShortcutUser user = getUserShortcutsLocked(userId); - user.forAllPackages(p -> shortcutInfoList.addAll(p.getMatchingShareTargets(filter))); + user.forAllPackages(p -> shortcutInfoList.addAll( + p.getMatchingShareTargets(filter, pkg))); return new ParceledListSlice<>(shortcutInfoList); } }