From b0a39a0b5cc5d991d71f74b55ee37ac2c9d52d76 Mon Sep 17 00:00:00 2001 From: Pinyao Ting Date: Tue, 13 Apr 2021 09:49:23 -0700 Subject: [PATCH] Fix an issue where the return value is null when retrieving shortcut Some testing devices were flashed to a build which contains a previous version of AppSearchShortcutInfo, the schema wasn't in use and should be updated to the latest version directly. Bug: 185186093 Test: manual Change-Id: Ie9b8a0d59611498909b5c78eca65fe563a65004b --- core/java/android/content/pm/AppSearchShortcutInfo.java | 2 +- .../core/java/com/android/server/pm/ShortcutPackage.java | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/core/java/android/content/pm/AppSearchShortcutInfo.java b/core/java/android/content/pm/AppSearchShortcutInfo.java index 6d5829c175b5a..eb50924579f61 100644 --- a/core/java/android/content/pm/AppSearchShortcutInfo.java +++ b/core/java/android/content/pm/AppSearchShortcutInfo.java @@ -52,7 +52,7 @@ public class AppSearchShortcutInfo extends GenericDocument { /** The name of the schema type for {@link ShortcutInfo} documents.*/ public static final String SCHEMA_TYPE = "Shortcut"; - public static final int SCHEMA_VERSION = 1; + public static final int SCHEMA_VERSION = 2; public static final String KEY_ACTIVITY = "activity"; public static final String KEY_SHORT_LABEL = "shortLabel"; diff --git a/services/core/java/com/android/server/pm/ShortcutPackage.java b/services/core/java/com/android/server/pm/ShortcutPackage.java index e222df04022e4..c462a6c7877ee 100644 --- a/services/core/java/com/android/server/pm/ShortcutPackage.java +++ b/services/core/java/com/android/server/pm/ShortcutPackage.java @@ -264,7 +264,7 @@ class ShortcutPackage extends ShortcutPackageItem { public ShortcutInfo findShortcutById(@Nullable final String id) { if (id == null) return null; final List ret = getShortcutById(Collections.singleton(id)); - return ret.isEmpty() ? null : ret.get(0); + return (ret == null || ret.isEmpty()) ? null : ret.get(0); } public boolean isShortcutExistsAndInvisibleToPublisher(String id) { @@ -2361,7 +2361,7 @@ class ShortcutPackage extends ShortcutPackageItem { }); } - @NonNull + @Nullable private List getShortcutById(@NonNull final Collection ids) { final List shortcutIds = new ArrayList<>(1); for (String id : ids) { @@ -2525,7 +2525,8 @@ class ShortcutPackage extends ShortcutPackageItem { private AndroidFuture setupSchema( @NonNull final AppSearchSession session) { SetSchemaRequest.Builder schemaBuilder = new SetSchemaRequest.Builder() - .addSchemas(AppSearchPerson.SCHEMA, AppSearchShortcutInfo.SCHEMA); + .addSchemas(AppSearchPerson.SCHEMA, AppSearchShortcutInfo.SCHEMA) + .setForceOverride(true); for (PackageIdentifier pi : mPackageIdentifiers.values()) { schemaBuilder = schemaBuilder .setSchemaTypeVisibilityForPackage(