Loading core/api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -11809,6 +11809,7 @@ package android.content.pm { method public void close(); method public void commit(@NonNull android.content.IntentSender); method public void fsync(@NonNull java.io.OutputStream) throws java.io.IOException; method @NonNull public android.os.PersistableBundle getAppMetadata(); method @NonNull public int[] getChildSessionIds(); method @NonNull public String[] getNames() throws java.io.IOException; method public int getParentSessionId(); Loading @@ -11821,6 +11822,7 @@ package android.content.pm { method public void removeSplit(@NonNull String) throws java.io.IOException; method public void requestChecksums(@NonNull String, int, @NonNull java.util.List<java.security.cert.Certificate>, @NonNull java.util.concurrent.Executor, @NonNull android.content.pm.PackageManager.OnChecksumsReadyListener) throws java.security.cert.CertificateEncodingException, java.io.FileNotFoundException; method public void requestUserPreapproval(@NonNull android.content.pm.PackageInstaller.PreapprovalDetails, @NonNull android.content.IntentSender); method public void setAppMetadata(@Nullable android.os.PersistableBundle) throws java.io.IOException; method @Deprecated public void setChecksums(@NonNull String, @NonNull java.util.List<android.content.pm.Checksum>, @Nullable byte[]) throws java.io.IOException; method public void setStagingProgress(float); method public void transfer(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException; core/api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -3614,6 +3614,7 @@ package android.content.pm { method public abstract boolean arePermissionsIndividuallyControlled(); method @NonNull public boolean[] canPackageQuery(@NonNull String, @NonNull String[]) throws android.content.pm.PackageManager.NameNotFoundException; method @NonNull public abstract java.util.List<android.content.IntentFilter> getAllIntentFilters(@NonNull String); method @NonNull @RequiresPermission("android.permission.GET_APP_METADATA") public android.os.PersistableBundle getAppMetadata(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException; method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.pm.ApplicationInfo getApplicationInfoAsUser(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException; method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.pm.ApplicationInfo getApplicationInfoAsUser(@NonNull String, @NonNull android.content.pm.PackageManager.ApplicationInfoFlags, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException; method @NonNull public android.content.pm.dex.ArtManager getArtManager(); core/java/android/app/ApplicationPackageManager.java +32 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,11 @@ import dalvik.system.VMRuntime; import libcore.util.EmptyArray; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.lang.ref.WeakReference; import java.security.cert.Certificate; import java.security.cert.CertificateEncodingException; Loading Loading @@ -1223,6 +1228,33 @@ public class ApplicationPackageManager extends PackageManager { } } @Override @NonNull public PersistableBundle getAppMetadata(@NonNull String packageName) throws NameNotFoundException { PersistableBundle appMetadata = null; String path = null; try { path = mPM.getAppMetadataPath(packageName, getUserId()); } catch (ParcelableException e) { e.maybeRethrow(NameNotFoundException.class); throw new RuntimeException(e); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } if (path != null) { File file = new File(path); try (InputStream inputStream = new FileInputStream(file)) { appMetadata = PersistableBundle.readFromStream(inputStream); } catch (FileNotFoundException e) { // ignore and return empty bundle if app metadata does not exist } catch (IOException e) { throw new RuntimeException(e); } } return appMetadata != null ? appMetadata : new PersistableBundle(); } @SuppressWarnings("unchecked") @Override public List<PackageInfo> getPackagesHoldingPermissions(String[] permissions, int flags) { Loading core/java/android/content/pm/IPackageInstallerSession.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -63,4 +63,7 @@ interface IPackageInstallerSession { void requestUserPreapproval(in PackageInstaller.PreapprovalDetails details, in IntentSender statusReceiver); boolean isKeepApplicationEnabledSetting(); ParcelFileDescriptor getAppMetadataFd(); ParcelFileDescriptor openWriteAppMetadata(); } core/java/android/content/pm/IPackageManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -159,6 +159,8 @@ interface IPackageManager { */ ParceledListSlice getInstalledPackages(long flags, in int userId); String getAppMetadataPath(String packageName, int userId); /** * This implements getPackagesHoldingPermissions via a "last returned row" * mechanism that is not exposed in the API. This is to get around the IPC Loading Loading
core/api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -11809,6 +11809,7 @@ package android.content.pm { method public void close(); method public void commit(@NonNull android.content.IntentSender); method public void fsync(@NonNull java.io.OutputStream) throws java.io.IOException; method @NonNull public android.os.PersistableBundle getAppMetadata(); method @NonNull public int[] getChildSessionIds(); method @NonNull public String[] getNames() throws java.io.IOException; method public int getParentSessionId(); Loading @@ -11821,6 +11822,7 @@ package android.content.pm { method public void removeSplit(@NonNull String) throws java.io.IOException; method public void requestChecksums(@NonNull String, int, @NonNull java.util.List<java.security.cert.Certificate>, @NonNull java.util.concurrent.Executor, @NonNull android.content.pm.PackageManager.OnChecksumsReadyListener) throws java.security.cert.CertificateEncodingException, java.io.FileNotFoundException; method public void requestUserPreapproval(@NonNull android.content.pm.PackageInstaller.PreapprovalDetails, @NonNull android.content.IntentSender); method public void setAppMetadata(@Nullable android.os.PersistableBundle) throws java.io.IOException; method @Deprecated public void setChecksums(@NonNull String, @NonNull java.util.List<android.content.pm.Checksum>, @Nullable byte[]) throws java.io.IOException; method public void setStagingProgress(float); method public void transfer(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
core/api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -3614,6 +3614,7 @@ package android.content.pm { method public abstract boolean arePermissionsIndividuallyControlled(); method @NonNull public boolean[] canPackageQuery(@NonNull String, @NonNull String[]) throws android.content.pm.PackageManager.NameNotFoundException; method @NonNull public abstract java.util.List<android.content.IntentFilter> getAllIntentFilters(@NonNull String); method @NonNull @RequiresPermission("android.permission.GET_APP_METADATA") public android.os.PersistableBundle getAppMetadata(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException; method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.pm.ApplicationInfo getApplicationInfoAsUser(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException; method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.pm.ApplicationInfo getApplicationInfoAsUser(@NonNull String, @NonNull android.content.pm.PackageManager.ApplicationInfoFlags, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException; method @NonNull public android.content.pm.dex.ArtManager getArtManager();
core/java/android/app/ApplicationPackageManager.java +32 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,11 @@ import dalvik.system.VMRuntime; import libcore.util.EmptyArray; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.lang.ref.WeakReference; import java.security.cert.Certificate; import java.security.cert.CertificateEncodingException; Loading Loading @@ -1223,6 +1228,33 @@ public class ApplicationPackageManager extends PackageManager { } } @Override @NonNull public PersistableBundle getAppMetadata(@NonNull String packageName) throws NameNotFoundException { PersistableBundle appMetadata = null; String path = null; try { path = mPM.getAppMetadataPath(packageName, getUserId()); } catch (ParcelableException e) { e.maybeRethrow(NameNotFoundException.class); throw new RuntimeException(e); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } if (path != null) { File file = new File(path); try (InputStream inputStream = new FileInputStream(file)) { appMetadata = PersistableBundle.readFromStream(inputStream); } catch (FileNotFoundException e) { // ignore and return empty bundle if app metadata does not exist } catch (IOException e) { throw new RuntimeException(e); } } return appMetadata != null ? appMetadata : new PersistableBundle(); } @SuppressWarnings("unchecked") @Override public List<PackageInfo> getPackagesHoldingPermissions(String[] permissions, int flags) { Loading
core/java/android/content/pm/IPackageInstallerSession.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -63,4 +63,7 @@ interface IPackageInstallerSession { void requestUserPreapproval(in PackageInstaller.PreapprovalDetails details, in IntentSender statusReceiver); boolean isKeepApplicationEnabledSetting(); ParcelFileDescriptor getAppMetadataFd(); ParcelFileDescriptor openWriteAppMetadata(); }
core/java/android/content/pm/IPackageManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -159,6 +159,8 @@ interface IPackageManager { */ ParceledListSlice getInstalledPackages(long flags, in int userId); String getAppMetadataPath(String packageName, int userId); /** * This implements getPackagesHoldingPermissions via a "last returned row" * mechanism that is not exposed in the API. This is to get around the IPC Loading