diff options
5 files changed, 62 insertions, 0 deletions
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index c071162ca5b9..df4b7d1eb50d 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -429,6 +429,16 @@ public class ApplicationPackageManager extends PackageManager { } } + /** @hide */ + @Override + public @Nullable String getServicesSystemSharedLibraryPackageName() { + try { + return mPM.getServicesSystemSharedLibraryPackageName(); + } catch (RemoteException e) { + throw new RuntimeException("Package manager has died", e); + } + } + @Override public FeatureInfo[] getSystemAvailableFeatures() { try { diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index 593fe2aef1e1..386385790e49 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -534,4 +534,6 @@ interface IPackageManager { boolean isEphemeralApplication(String packageName, int userId); boolean setRequiredForSystemUser(String packageName, boolean systemUserApp); + + String getServicesSystemSharedLibraryPackageName(); } diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 08deedb9fb65..bf0d4ded17a9 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -2327,6 +2327,28 @@ public abstract class PackageManager { public static final int MASK_PERMISSION_FLAGS = 0xFF; /** + * This is a library that contains components apps can invoke. For + * example, a services for apps to bind to, or standard chooser UI, + * etc. This library is versioned and backwards compatible. Clients + * should check its version via {@link android.ext.services.Version + * #getVersionCode()} and avoid calling APIs added in later versions. + * + * @hide + */ + public static final String SYSTEM_SHARED_LIBRARY_SERVICES = "android.ext.services"; + + /** + * This is a library that contains components apps can dynamically + * load. For example, new widgets, helper classes, etc. This library + * is versioned and backwards compatible. Clients should check its + * version via {@link android.ext.shared.Version#getVersionCode()} + * and avoid calling APIs added in later versions. + * + * @hide + */ + public static final String SYSTEM_SHARED_LIBRARY_SHARED = "android.ext.shared"; + + /** * Retrieve overall information about an application package that is * installed on the system. * @@ -3365,6 +3387,15 @@ public abstract class PackageManager { public abstract String[] getSystemSharedLibraryNames(); /** + * Get the name of the package hosting the services shared library. + * + * @return The library host package. + * + * @hide + */ + public abstract @Nullable String getServicesSystemSharedLibraryPackageName(); + + /** * Get a list of features that are available on the * system. * diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 04e4a8cebb46..e47d5144cce0 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -3427,6 +3427,18 @@ public class PackageManagerService extends IPackageManager.Stub { } @Override + public @Nullable String getServicesSystemSharedLibraryPackageName() { + synchronized (mPackages) { + SharedLibraryEntry libraryEntry = mSharedLibraries.get( + PackageManager.SYSTEM_SHARED_LIBRARY_SERVICES); + if (libraryEntry != null) { + return libraryEntry.apk; + } + } + return null; + } + + @Override public FeatureInfo[] getSystemAvailableFeatures() { Collection<FeatureInfo> featSet; synchronized (mPackages) { diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java index ffb73f63230c..4e6d638d4739 100644 --- a/test-runner/src/android/test/mock/MockPackageManager.java +++ b/test-runner/src/android/test/mock/MockPackageManager.java @@ -17,6 +17,7 @@ package android.test.mock; import android.annotation.NonNull; +import android.annotation.Nullable; import android.app.PackageInstallObserver; import android.content.ComponentName; import android.content.Intent; @@ -806,6 +807,12 @@ public class MockPackageManager extends PackageManager { throw new UnsupportedOperationException(); } + /** @hide */ + @Override + public @Nullable String getServicesSystemSharedLibraryPackageName() { + throw new UnsupportedOperationException(); + } + @Override public FeatureInfo[] getSystemAvailableFeatures() { throw new UnsupportedOperationException(); |