diff --git a/core/java/android/content/pm/LauncherActivityInfoInternal.java b/core/java/android/content/pm/LauncherActivityInfoInternal.java index 22e9712ebe3bc..839b1761aadfd 100644 --- a/core/java/android/content/pm/LauncherActivityInfoInternal.java +++ b/core/java/android/content/pm/LauncherActivityInfoInternal.java @@ -16,6 +16,8 @@ package android.content.pm; +import android.annotation.NonNull; +import android.annotation.Nullable; import android.compat.annotation.UnsupportedAppUsage; import android.content.ComponentName; import android.os.Parcel; @@ -28,17 +30,23 @@ public class LauncherActivityInfoInternal implements Parcelable { @UnsupportedAppUsage private ActivityInfo mActivityInfo; private ComponentName mComponentName; - private IncrementalStatesInfo mIncrementalStatesInfo; + @NonNull private IncrementalStatesInfo mIncrementalStatesInfo; /** * @param info ActivityInfo from which to create the LauncherActivityInfo. * @param incrementalStatesInfo The package's states. */ public LauncherActivityInfoInternal(ActivityInfo info, - IncrementalStatesInfo incrementalStatesInfo) { + @Nullable IncrementalStatesInfo incrementalStatesInfo) { mActivityInfo = info; mComponentName = new ComponentName(info.packageName, info.name); - mIncrementalStatesInfo = incrementalStatesInfo; + if (incrementalStatesInfo == null) { + // default value for non-incremental apps + mIncrementalStatesInfo = new IncrementalStatesInfo( + true /* isStartable */, false /* isLoading */, 1 /* progress */); + } else { + mIncrementalStatesInfo = incrementalStatesInfo; + } } public LauncherActivityInfoInternal(Parcel source) { diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java index 66ae50e4e140a..f8bb564f9021f 100644 --- a/services/core/java/com/android/server/pm/LauncherAppsService.java +++ b/services/core/java/com/android/server/pm/LauncherAppsService.java @@ -548,8 +548,13 @@ public class LauncherAppsService extends SystemService { PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE, callingUid, user.getIdentifier()); - final IncrementalStatesInfo incrementalStatesInfo = pmInt.getIncrementalStatesInfo( - component.getPackageName(), callingUid, user.getIdentifier()); + final IncrementalStatesInfo incrementalStatesInfo; + if (component.getPackageName() == null) { + incrementalStatesInfo = null; + } else { + incrementalStatesInfo = pmInt.getIncrementalStatesInfo( + component.getPackageName(), callingUid, user.getIdentifier()); + } return new LauncherActivityInfoInternal(activityInfo, incrementalStatesInfo); } finally { Binder.restoreCallingIdentity(ident); @@ -592,11 +597,12 @@ public class LauncherAppsService extends SystemService { List results = new ArrayList<>(); for (int i = 0; i < numResolveInfos; i++) { final ResolveInfo ri = apps.get(i); - final IncrementalStatesInfo incrementalStatesInfo = - pmInt.getIncrementalStatesInfo(ri.resolvePackageName, callingUid, - user.getIdentifier()); - if (incrementalStatesInfo == null) { - continue; + final IncrementalStatesInfo incrementalStatesInfo; + if (ri.resolvePackageName == null) { + incrementalStatesInfo = null; + } else { + incrementalStatesInfo = pmInt.getIncrementalStatesInfo( + ri.resolvePackageName, callingUid, user.getIdentifier()); } results.add(new LauncherActivityInfoInternal(ri.activityInfo, incrementalStatesInfo)); diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 5b4244092c9c5..c33c660230178 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -25662,12 +25662,10 @@ public class PackageManagerService extends IPackageManager.Stub @Override public IncrementalStatesInfo getIncrementalStatesInfo( - String packageName, int filterCallingUid, int userId) { + @NonNull String packageName, int filterCallingUid, int userId) { final PackageSetting ps = getPackageSettingForUser(packageName, filterCallingUid, userId); if (ps == null) { - Slog.w(TAG, "Failed getting incremental state. Package " + packageName - + " is not available"); return null; } return ps.getIncrementalStates();