diff --git a/core/api/current.txt b/core/api/current.txt index 3da406f3b3e3d..5af1ac6b2c10d 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -11664,7 +11664,7 @@ package android.content.pm { public class PackageInstaller { method public void abandonSession(int); - method public void checkInstallConstraints(@NonNull java.util.List, @NonNull android.content.pm.PackageInstaller.InstallConstraints, @NonNull java.util.function.Consumer); + method public void checkInstallConstraints(@NonNull java.util.List, @NonNull android.content.pm.PackageInstaller.InstallConstraints, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer); method public int createSession(@NonNull android.content.pm.PackageInstaller.SessionParams) throws java.io.IOException; method @Deprecated @Nullable public android.content.pm.PackageInstaller.SessionInfo getActiveStagedSession(); method @NonNull public java.util.List getActiveStagedSessions(); diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java index c79f99d9d8c9c..1f01ae971d2b1 100644 --- a/core/java/android/content/pm/PackageInstaller.java +++ b/core/java/android/content/pm/PackageInstaller.java @@ -867,10 +867,15 @@ public class PackageInstaller { */ public void checkInstallConstraints(@NonNull List packageNames, @NonNull InstallConstraints constraints, + @NonNull @CallbackExecutor Executor executor, @NonNull Consumer callback) { + Objects.requireNonNull(executor); + Objects.requireNonNull(callback); try { var remoteCallback = new RemoteCallback(b -> { - callback.accept(b.getParcelable("result", InstallConstraintsResult.class)); + executor.execute(() -> { + callback.accept(b.getParcelable("result", InstallConstraintsResult.class)); + }); }); mInstaller.checkInstallConstraints( mInstallerPackageName, packageNames, constraints, remoteCallback); @@ -3675,7 +3680,7 @@ public class PackageInstaller { } /** - * The callback result of {@link #checkInstallConstraints(List, InstallConstraints, Consumer)}. + * The callback result of {@link #checkInstallConstraints(List, InstallConstraints, Executor, Consumer)}. */ @DataClass(genParcelable = true, genHiddenConstructor = true) public static final class InstallConstraintsResult implements Parcelable { @@ -3783,7 +3788,7 @@ public class PackageInstaller { /** * A class to encapsulate constraints for installation. * - * When used with {@link #checkInstallConstraints(List, InstallConstraints, Consumer)}, it + * When used with {@link #checkInstallConstraints(List, InstallConstraints, Executor, Consumer)}, it * specifies the conditions to check against for the packages in question. This can be used * by app stores to deliver auto updates without disrupting the user experience (referred as * gentle update) - for example, an app store might hold off updates when it find out the