Loading core/java/android/content/pm/IShortcutService.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -76,4 +76,6 @@ interface IShortcutService { // System API used by framework's ShareSheet (ChooserActivity) ParceledListSlice getShareTargets(String packageName, in IntentFilter filter, int userId); boolean hasShareTargets(String packageName, String packageToCheck, int userId); } No newline at end of file core/java/android/content/pm/ShortcutManager.java +17 −0 Original line number Diff line number Diff line Loading @@ -635,4 +635,21 @@ public class ShortcutManager { } }; } /** * Used by framework's ShareSheet (ChooserActivity.java) to check if a given package has share * target definitions in it's resources. * * @param packageName Package to check for share targets. * @return True if the package has any share target definitions, False otherwise. * @hide */ public boolean hasShareTargets(@NonNull String packageName) { try { return mService.hasShareTargets(mContext.getPackageName(), packageName, injectMyUserId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } } core/java/com/android/internal/app/ChooserActivity.java +6 −0 Original line number Diff line number Diff line Loading @@ -513,6 +513,7 @@ public class ChooserActivity extends ResolverActivity { void queryTargetServices(ChooserListAdapter adapter) { final PackageManager pm = getPackageManager(); ShortcutManager sm = (ShortcutManager) getSystemService(ShortcutManager.class); int targetsToQuery = 0; for (int i = 0, N = adapter.getDisplayResolveInfoCount(); i < N; i++) { final DisplayResolveInfo dri = adapter.getDisplayResolveInfo(i); Loading @@ -522,6 +523,11 @@ public class ChooserActivity extends ResolverActivity { continue; } final ActivityInfo ai = dri.getResolveInfo().activityInfo; if (USE_SHORTCUT_MANAGER_FOR_DIRECT_TARGETS && sm.hasShareTargets(ai.packageName)) { // Share targets will be queried from ShortcutManager continue; } final Bundle md = ai.metaData; final String serviceName = md != null ? convertServiceName(ai.packageName, md.getString(ChooserTargetService.META_DATA_NAME)) : null; Loading services/core/java/com/android/server/pm/ShortcutPackage.java +4 −0 Original line number Diff line number Diff line Loading @@ -690,6 +690,10 @@ class ShortcutPackage extends ShortcutPackageItem { return result; } public boolean hasShareTargets() { return !mShareTargets.isEmpty(); } /** * Return the filenames (excluding path names) of icon bitmap files from this package. */ Loading services/core/java/com/android/server/pm/ShortcutService.java +13 −0 Original line number Diff line number Diff line Loading @@ -2167,6 +2167,19 @@ public class ShortcutService extends IShortcutService.Stub { } } @Override public boolean hasShareTargets(String packageName, String packageToCheck, @UserIdInt int userId) { verifyCaller(packageName, userId); enforceSystem(); synchronized (mLock) { throwIfUserLockedL(userId); return getPackageShortcutsLocked(packageToCheck, userId).hasShareTargets(); } } @GuardedBy("mLock") private ParceledListSlice<ShortcutInfo> getShortcutsWithQueryLocked(@NonNull String packageName, @UserIdInt int userId, int cloneFlags, @NonNull Predicate<ShortcutInfo> query) { Loading Loading
core/java/android/content/pm/IShortcutService.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -76,4 +76,6 @@ interface IShortcutService { // System API used by framework's ShareSheet (ChooserActivity) ParceledListSlice getShareTargets(String packageName, in IntentFilter filter, int userId); boolean hasShareTargets(String packageName, String packageToCheck, int userId); } No newline at end of file
core/java/android/content/pm/ShortcutManager.java +17 −0 Original line number Diff line number Diff line Loading @@ -635,4 +635,21 @@ public class ShortcutManager { } }; } /** * Used by framework's ShareSheet (ChooserActivity.java) to check if a given package has share * target definitions in it's resources. * * @param packageName Package to check for share targets. * @return True if the package has any share target definitions, False otherwise. * @hide */ public boolean hasShareTargets(@NonNull String packageName) { try { return mService.hasShareTargets(mContext.getPackageName(), packageName, injectMyUserId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } }
core/java/com/android/internal/app/ChooserActivity.java +6 −0 Original line number Diff line number Diff line Loading @@ -513,6 +513,7 @@ public class ChooserActivity extends ResolverActivity { void queryTargetServices(ChooserListAdapter adapter) { final PackageManager pm = getPackageManager(); ShortcutManager sm = (ShortcutManager) getSystemService(ShortcutManager.class); int targetsToQuery = 0; for (int i = 0, N = adapter.getDisplayResolveInfoCount(); i < N; i++) { final DisplayResolveInfo dri = adapter.getDisplayResolveInfo(i); Loading @@ -522,6 +523,11 @@ public class ChooserActivity extends ResolverActivity { continue; } final ActivityInfo ai = dri.getResolveInfo().activityInfo; if (USE_SHORTCUT_MANAGER_FOR_DIRECT_TARGETS && sm.hasShareTargets(ai.packageName)) { // Share targets will be queried from ShortcutManager continue; } final Bundle md = ai.metaData; final String serviceName = md != null ? convertServiceName(ai.packageName, md.getString(ChooserTargetService.META_DATA_NAME)) : null; Loading
services/core/java/com/android/server/pm/ShortcutPackage.java +4 −0 Original line number Diff line number Diff line Loading @@ -690,6 +690,10 @@ class ShortcutPackage extends ShortcutPackageItem { return result; } public boolean hasShareTargets() { return !mShareTargets.isEmpty(); } /** * Return the filenames (excluding path names) of icon bitmap files from this package. */ Loading
services/core/java/com/android/server/pm/ShortcutService.java +13 −0 Original line number Diff line number Diff line Loading @@ -2167,6 +2167,19 @@ public class ShortcutService extends IShortcutService.Stub { } } @Override public boolean hasShareTargets(String packageName, String packageToCheck, @UserIdInt int userId) { verifyCaller(packageName, userId); enforceSystem(); synchronized (mLock) { throwIfUserLockedL(userId); return getPackageShortcutsLocked(packageToCheck, userId).hasShareTargets(); } } @GuardedBy("mLock") private ParceledListSlice<ShortcutInfo> getShortcutsWithQueryLocked(@NonNull String packageName, @UserIdInt int userId, int cloneFlags, @NonNull Predicate<ShortcutInfo> query) { Loading