diff --git a/api/system-current.txt b/api/system-current.txt index b0eb10db5d8a2..e8bdeab9671bd 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -11237,6 +11237,7 @@ package android.content.pm { method public abstract byte[] getInstantAppCookie(); method public abstract int getInstantAppCookieMaxSize(); method public abstract android.graphics.drawable.Drawable getInstantAppIcon(java.lang.String); + method public abstract android.content.ComponentName getInstantAppInstallerComponent(); method public abstract android.content.ComponentName getInstantAppResolverSettingsComponent(); method public abstract java.util.List getInstantApps(); method public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; @@ -44499,6 +44500,7 @@ package android.test.mock { method public byte[] getInstantAppCookie(); method public int getInstantAppCookieMaxSize(); method public android.graphics.drawable.Drawable getInstantAppIcon(java.lang.String); + method public android.content.ComponentName getInstantAppInstallerComponent(); method public android.content.ComponentName getInstantAppResolverSettingsComponent(); method public java.util.List getInstantApps(); method public android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index a6838f8bbf0ac..e07b7e4a03a12 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -2639,4 +2639,13 @@ public class ApplicationPackageManager extends PackageManager { throw e.rethrowAsRuntimeException(); } } + + @Override + public ComponentName getInstantAppInstallerComponent() { + try { + return mPM.getInstantAppInstallerComponent(); + } catch (RemoteException e) { + throw e.rethrowAsRuntimeException(); + } + } } diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index 147df763fce28..bbc942aff3722 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -632,4 +632,6 @@ interface IPackageManager { void deletePreloadsFileCache(); ComponentName getInstantAppResolverSettingsComponent(); + + ComponentName getInstantAppInstallerComponent(); } diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index e5c8f0d2ab3e9..09906be7cd26c 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -6275,9 +6275,19 @@ public abstract class PackageManager { * Return the {@link ComponentName} of the activity providing Settings for the Instant App * resolver. * - * @see {@link android.content.intent#ACTION_INSTANT_APP_RESOLVER_SETTINGS} + * @see {@link android.content.Intent#ACTION_INSTANT_APP_RESOLVER_SETTINGS} * @hide */ @SystemApi public abstract ComponentName getInstantAppResolverSettingsComponent(); + + /** + * Return the {@link ComponentName} of the activity responsible for installing instant + * applications. + * + * @see {@link android.content.Intent#ACTION_INSTALL_INSTANT_APP_PACKAGE} + * @hide + */ + @SystemApi + public abstract ComponentName getInstantAppInstallerComponent(); } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 650d2f69fc08b..9040fcfe3cdc7 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -23636,4 +23636,10 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); public ComponentName getInstantAppResolverSettingsComponent() { return mInstantAppResolverSettingsComponent; } + + @Override + public ComponentName getInstantAppInstallerComponent() { + return mInstantAppInstallerActivity == null + ? null : mInstantAppInstallerActivity.getComponentName(); + } } diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java index 960a2d9fd726a..20392e7335992 100644 --- a/test-runner/src/android/test/mock/MockPackageManager.java +++ b/test-runner/src/android/test/mock/MockPackageManager.java @@ -1126,4 +1126,12 @@ public class MockPackageManager extends PackageManager { public ComponentName getInstantAppResolverSettingsComponent() { throw new UnsupportedOperationException(); } + + /** + * @hide + */ + @Override + public ComponentName getInstantAppInstallerComponent() { + throw new UnsupportedOperationException(); + } } diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java index 5a239e1f3f38e..ad26bc8b86723 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java @@ -923,4 +923,9 @@ public class BridgePackageManager extends PackageManager { public ComponentName getInstantAppResolverSettingsComponent() { return null; } + + @Override + public ComponentName getInstantAppInstallerComponent() { + return null; + } }