/* * This file is auto-generated. DO NOT MODIFY. * Using: out/host/linux-x86/bin/aidl --lang=java -Weverything -Wno-missing-permission-annotation --min_sdk_version current --ninja -d out/soong/.intermediates/frameworks/native/libs/binder/packagemanager_aidl-java-source/gen/android/content/pm/IPackageManagerNative.java.d -o out/soong/.intermediates/frameworks/native/libs/binder/packagemanager_aidl-java-source/gen -Nframeworks/native/libs/binder/aidl frameworks/native/libs/binder/aidl/android/content/pm/IPackageManagerNative.aidl */ package android.content.pm; /** * Parallel implementation of certain {@link PackageManager} APIs that need to * be exposed to native code. *

These APIs are a parallel definition to the APIs in PackageManager, so, * they can technically diverge. However, it's good practice to keep these * APIs in sync with each other. *

Because these APIs are exposed to native code, it's possible they will * be exposed to privileged components [such as UID 0]. Care should be taken * to avoid exposing potential security holes for methods where permission * checks are bypassed based upon UID alone. * * @hide */ public interface IPackageManagerNative extends android.os.IInterface { /** Default implementation for IPackageManagerNative. */ public static class Default implements android.content.pm.IPackageManagerNative { /** * Returns a set of names for the given UIDs. * IMPORTANT: Unlike the Java version of this API, unknown UIDs are * not represented by 'null's. Instead, they are represented by empty * strings. */ @Override public java.lang.String[] getNamesForUids(int[] uids) throws android.os.RemoteException { return null; } /** * Return the UID associated with the given package name. * Note that the same package will have different UIDs under different UserHandle on * the same device. * @param packageName The full name (i.e. com.google.apps.contacts) of the desired package. * @param flags Additional option flags to modify the data returned. * @param userId The user handle identifier to look up the package under. * @return Returns an integer UID who owns the given package name, or -1 if no such package is * available to the caller. */ @Override public int getPackageUid(java.lang.String packageName, long flags, int userId) throws android.os.RemoteException { return 0; } /** * Returns the name of the installer (a package) which installed the named * package. Preloaded packages return the string "preload". Sideloaded packages * return an empty string. Unknown or unknowable are returned as empty strings. */ @Override public java.lang.String getInstallerForPackage(java.lang.String packageName) throws android.os.RemoteException { return null; } /** * Returns the version code of the named package. * Unknown or unknowable versions are returned as 0. */ @Override public long getVersionCodeForPackage(java.lang.String packageName) throws android.os.RemoteException { return 0L; } /** * Return if each app, identified by its package name allows its audio to be recorded. * Unknown packages are mapped to false. */ @Override public boolean[] isAudioPlaybackCaptureAllowed(java.lang.String[] packageNames) throws android.os.RemoteException { return null; } /** * Returns a set of bitflags about package location. * LOCATION_SYSTEM: getApplicationInfo(packageName).isSystemApp() * LOCATION_VENDOR: getApplicationInfo(packageName).isVendor() * LOCATION_PRODUCT: getApplicationInfo(packageName).isProduct() */ @Override public int getLocationFlags(java.lang.String packageName) throws android.os.RemoteException { return 0; } /** * Returns the target SDK version for the given package. * Unknown packages will cause the call to fail. The caller must check the * returned Status before using the result of this function. */ @Override public int getTargetSdkVersionForPackage(java.lang.String packageName) throws android.os.RemoteException { return 0; } /** * Returns the name of module metadata package, or empty string if device doesn't have such * package. */ @Override public java.lang.String getModuleMetadataPackageName() throws android.os.RemoteException { return null; } /** * Returns true if the package has the SHA 256 version of the signing certificate. * @see PackageManager#hasSigningCertificate(String, byte[], int), where type * has been set to {@link PackageManager#CERT_INPUT_SHA256}. */ @Override public boolean hasSha256SigningCertificate(java.lang.String packageName, byte[] certificate) throws android.os.RemoteException { return false; } /** * Returns the debug flag for the given package. * Unknown packages will cause the call to fail. */ @Override public boolean isPackageDebuggable(java.lang.String packageName) throws android.os.RemoteException { return false; } /** * Check whether the given feature name and version is one of the available * features as returned by {@link PackageManager#getSystemAvailableFeatures()}. Since * features are defined to always be backwards compatible, this returns true * if the available feature version is greater than or equal to the * requested version. */ @Override public boolean hasSystemFeature(java.lang.String featureName, int version) throws android.os.RemoteException { return false; } /** Register a observer for change in set of staged APEX ready for installation */ @Override public void registerStagedApexObserver(android.content.pm.IStagedApexObserver observer) throws android.os.RemoteException { } /** * Unregister an existing staged apex observer. * This does nothing if this observer was not already registered. */ @Override public void unregisterStagedApexObserver(android.content.pm.IStagedApexObserver observer) throws android.os.RemoteException { } /** Get APEX module names of all APEX that are staged ready for installation */ @Override public java.lang.String[] getStagedApexModuleNames() throws android.os.RemoteException { return null; } /** * Get information of APEX which is staged ready for installation. * Returns null if no such APEX is found. */ @Override public android.content.pm.StagedApexInfo getStagedApexInfo(java.lang.String moduleName) throws android.os.RemoteException { return null; } @Override public android.os.IBinder asBinder() { return null; } } /** Local-side IPC implementation stub class. */ public static abstract class Stub extends android.os.Binder implements android.content.pm.IPackageManagerNative { /** Construct the stub at attach it to the interface. */ @SuppressWarnings("this-escape") public Stub() { this.attachInterface(this, DESCRIPTOR); } /** * Cast an IBinder object into an android.content.pm.IPackageManagerNative interface, * generating a proxy if needed. */ public static android.content.pm.IPackageManagerNative asInterface(android.os.IBinder obj) { if ((obj==null)) { return null; } android.os.IInterface iin = obj.queryLocalInterface(DESCRIPTOR); if (((iin!=null)&&(iin instanceof android.content.pm.IPackageManagerNative))) { return ((android.content.pm.IPackageManagerNative)iin); } return new android.content.pm.IPackageManagerNative.Stub.Proxy(obj); } @Override public android.os.IBinder asBinder() { return this; } @Override public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) throws android.os.RemoteException { java.lang.String descriptor = DESCRIPTOR; if (code >= android.os.IBinder.FIRST_CALL_TRANSACTION && code <= android.os.IBinder.LAST_CALL_TRANSACTION) { data.enforceInterface(descriptor); } if (code == INTERFACE_TRANSACTION) { reply.writeString(descriptor); return true; } switch (code) { case TRANSACTION_getNamesForUids: { int[] _arg0; _arg0 = data.createIntArray(); data.enforceNoDataAvail(); java.lang.String[] _result = this.getNamesForUids(_arg0); reply.writeNoException(); reply.writeStringArray(_result); break; } case TRANSACTION_getPackageUid: { java.lang.String _arg0; _arg0 = data.readString(); long _arg1; _arg1 = data.readLong(); int _arg2; _arg2 = data.readInt(); data.enforceNoDataAvail(); int _result = this.getPackageUid(_arg0, _arg1, _arg2); reply.writeNoException(); reply.writeInt(_result); break; } case TRANSACTION_getInstallerForPackage: { java.lang.String _arg0; _arg0 = data.readString(); data.enforceNoDataAvail(); java.lang.String _result = this.getInstallerForPackage(_arg0); reply.writeNoException(); reply.writeString(_result); break; } case TRANSACTION_getVersionCodeForPackage: { java.lang.String _arg0; _arg0 = data.readString(); data.enforceNoDataAvail(); long _result = this.getVersionCodeForPackage(_arg0); reply.writeNoException(); reply.writeLong(_result); break; } case TRANSACTION_isAudioPlaybackCaptureAllowed: { java.lang.String[] _arg0; _arg0 = data.createStringArray(); data.enforceNoDataAvail(); boolean[] _result = this.isAudioPlaybackCaptureAllowed(_arg0); reply.writeNoException(); reply.writeBooleanArray(_result); break; } case TRANSACTION_getLocationFlags: { java.lang.String _arg0; _arg0 = data.readString(); data.enforceNoDataAvail(); int _result = this.getLocationFlags(_arg0); reply.writeNoException(); reply.writeInt(_result); break; } case TRANSACTION_getTargetSdkVersionForPackage: { java.lang.String _arg0; _arg0 = data.readString(); data.enforceNoDataAvail(); int _result = this.getTargetSdkVersionForPackage(_arg0); reply.writeNoException(); reply.writeInt(_result); break; } case TRANSACTION_getModuleMetadataPackageName: { java.lang.String _result = this.getModuleMetadataPackageName(); reply.writeNoException(); reply.writeString(_result); break; } case TRANSACTION_hasSha256SigningCertificate: { java.lang.String _arg0; _arg0 = data.readString(); byte[] _arg1; _arg1 = data.createByteArray(); data.enforceNoDataAvail(); boolean _result = this.hasSha256SigningCertificate(_arg0, _arg1); reply.writeNoException(); reply.writeBoolean(_result); break; } case TRANSACTION_isPackageDebuggable: { java.lang.String _arg0; _arg0 = data.readString(); data.enforceNoDataAvail(); boolean _result = this.isPackageDebuggable(_arg0); reply.writeNoException(); reply.writeBoolean(_result); break; } case TRANSACTION_hasSystemFeature: { java.lang.String _arg0; _arg0 = data.readString(); int _arg1; _arg1 = data.readInt(); data.enforceNoDataAvail(); boolean _result = this.hasSystemFeature(_arg0, _arg1); reply.writeNoException(); reply.writeBoolean(_result); break; } case TRANSACTION_registerStagedApexObserver: { android.content.pm.IStagedApexObserver _arg0; _arg0 = android.content.pm.IStagedApexObserver.Stub.asInterface(data.readStrongBinder()); data.enforceNoDataAvail(); this.registerStagedApexObserver(_arg0); reply.writeNoException(); break; } case TRANSACTION_unregisterStagedApexObserver: { android.content.pm.IStagedApexObserver _arg0; _arg0 = android.content.pm.IStagedApexObserver.Stub.asInterface(data.readStrongBinder()); data.enforceNoDataAvail(); this.unregisterStagedApexObserver(_arg0); reply.writeNoException(); break; } case TRANSACTION_getStagedApexModuleNames: { java.lang.String[] _result = this.getStagedApexModuleNames(); reply.writeNoException(); reply.writeStringArray(_result); break; } case TRANSACTION_getStagedApexInfo: { java.lang.String _arg0; _arg0 = data.readString(); data.enforceNoDataAvail(); android.content.pm.StagedApexInfo _result = this.getStagedApexInfo(_arg0); reply.writeNoException(); reply.writeTypedObject(_result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); break; } default: { return super.onTransact(code, data, reply, flags); } } return true; } private static class Proxy implements android.content.pm.IPackageManagerNative { private android.os.IBinder mRemote; Proxy(android.os.IBinder remote) { mRemote = remote; } @Override public android.os.IBinder asBinder() { return mRemote; } public java.lang.String getInterfaceDescriptor() { return DESCRIPTOR; } /** * Returns a set of names for the given UIDs. * IMPORTANT: Unlike the Java version of this API, unknown UIDs are * not represented by 'null's. Instead, they are represented by empty * strings. */ @Override public java.lang.String[] getNamesForUids(int[] uids) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); java.lang.String[] _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeIntArray(uids); boolean _status = mRemote.transact(Stub.TRANSACTION_getNamesForUids, _data, _reply, 0); _reply.readException(); _result = _reply.createStringArray(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Return the UID associated with the given package name. * Note that the same package will have different UIDs under different UserHandle on * the same device. * @param packageName The full name (i.e. com.google.apps.contacts) of the desired package. * @param flags Additional option flags to modify the data returned. * @param userId The user handle identifier to look up the package under. * @return Returns an integer UID who owns the given package name, or -1 if no such package is * available to the caller. */ @Override public int getPackageUid(java.lang.String packageName, long flags, int userId) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); int _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeString(packageName); _data.writeLong(flags); _data.writeInt(userId); boolean _status = mRemote.transact(Stub.TRANSACTION_getPackageUid, _data, _reply, 0); _reply.readException(); _result = _reply.readInt(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Returns the name of the installer (a package) which installed the named * package. Preloaded packages return the string "preload". Sideloaded packages * return an empty string. Unknown or unknowable are returned as empty strings. */ @Override public java.lang.String getInstallerForPackage(java.lang.String packageName) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); java.lang.String _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeString(packageName); boolean _status = mRemote.transact(Stub.TRANSACTION_getInstallerForPackage, _data, _reply, 0); _reply.readException(); _result = _reply.readString(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Returns the version code of the named package. * Unknown or unknowable versions are returned as 0. */ @Override public long getVersionCodeForPackage(java.lang.String packageName) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); long _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeString(packageName); boolean _status = mRemote.transact(Stub.TRANSACTION_getVersionCodeForPackage, _data, _reply, 0); _reply.readException(); _result = _reply.readLong(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Return if each app, identified by its package name allows its audio to be recorded. * Unknown packages are mapped to false. */ @Override public boolean[] isAudioPlaybackCaptureAllowed(java.lang.String[] packageNames) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean[] _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeStringArray(packageNames); boolean _status = mRemote.transact(Stub.TRANSACTION_isAudioPlaybackCaptureAllowed, _data, _reply, 0); _reply.readException(); _result = _reply.createBooleanArray(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Returns a set of bitflags about package location. * LOCATION_SYSTEM: getApplicationInfo(packageName).isSystemApp() * LOCATION_VENDOR: getApplicationInfo(packageName).isVendor() * LOCATION_PRODUCT: getApplicationInfo(packageName).isProduct() */ @Override public int getLocationFlags(java.lang.String packageName) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); int _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeString(packageName); boolean _status = mRemote.transact(Stub.TRANSACTION_getLocationFlags, _data, _reply, 0); _reply.readException(); _result = _reply.readInt(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Returns the target SDK version for the given package. * Unknown packages will cause the call to fail. The caller must check the * returned Status before using the result of this function. */ @Override public int getTargetSdkVersionForPackage(java.lang.String packageName) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); int _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeString(packageName); boolean _status = mRemote.transact(Stub.TRANSACTION_getTargetSdkVersionForPackage, _data, _reply, 0); _reply.readException(); _result = _reply.readInt(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Returns the name of module metadata package, or empty string if device doesn't have such * package. */ @Override public java.lang.String getModuleMetadataPackageName() throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); java.lang.String _result; try { _data.writeInterfaceToken(DESCRIPTOR); boolean _status = mRemote.transact(Stub.TRANSACTION_getModuleMetadataPackageName, _data, _reply, 0); _reply.readException(); _result = _reply.readString(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Returns true if the package has the SHA 256 version of the signing certificate. * @see PackageManager#hasSigningCertificate(String, byte[], int), where type * has been set to {@link PackageManager#CERT_INPUT_SHA256}. */ @Override public boolean hasSha256SigningCertificate(java.lang.String packageName, byte[] certificate) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeString(packageName); _data.writeByteArray(certificate); boolean _status = mRemote.transact(Stub.TRANSACTION_hasSha256SigningCertificate, _data, _reply, 0); _reply.readException(); _result = _reply.readBoolean(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Returns the debug flag for the given package. * Unknown packages will cause the call to fail. */ @Override public boolean isPackageDebuggable(java.lang.String packageName) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeString(packageName); boolean _status = mRemote.transact(Stub.TRANSACTION_isPackageDebuggable, _data, _reply, 0); _reply.readException(); _result = _reply.readBoolean(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Check whether the given feature name and version is one of the available * features as returned by {@link PackageManager#getSystemAvailableFeatures()}. Since * features are defined to always be backwards compatible, this returns true * if the available feature version is greater than or equal to the * requested version. */ @Override public boolean hasSystemFeature(java.lang.String featureName, int version) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeString(featureName); _data.writeInt(version); boolean _status = mRemote.transact(Stub.TRANSACTION_hasSystemFeature, _data, _reply, 0); _reply.readException(); _result = _reply.readBoolean(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** Register a observer for change in set of staged APEX ready for installation */ @Override public void registerStagedApexObserver(android.content.pm.IStagedApexObserver observer) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeStrongInterface(observer); boolean _status = mRemote.transact(Stub.TRANSACTION_registerStagedApexObserver, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** * Unregister an existing staged apex observer. * This does nothing if this observer was not already registered. */ @Override public void unregisterStagedApexObserver(android.content.pm.IStagedApexObserver observer) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeStrongInterface(observer); boolean _status = mRemote.transact(Stub.TRANSACTION_unregisterStagedApexObserver, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** Get APEX module names of all APEX that are staged ready for installation */ @Override public java.lang.String[] getStagedApexModuleNames() throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); java.lang.String[] _result; try { _data.writeInterfaceToken(DESCRIPTOR); boolean _status = mRemote.transact(Stub.TRANSACTION_getStagedApexModuleNames, _data, _reply, 0); _reply.readException(); _result = _reply.createStringArray(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Get information of APEX which is staged ready for installation. * Returns null if no such APEX is found. */ @Override public android.content.pm.StagedApexInfo getStagedApexInfo(java.lang.String moduleName) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); android.content.pm.StagedApexInfo _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeString(moduleName); boolean _status = mRemote.transact(Stub.TRANSACTION_getStagedApexInfo, _data, _reply, 0); _reply.readException(); _result = _reply.readTypedObject(android.content.pm.StagedApexInfo.CREATOR); } finally { _reply.recycle(); _data.recycle(); } return _result; } } /** @hide */ public static final java.lang.String DESCRIPTOR = "android.content.pm.IPackageManagerNative"; static final int TRANSACTION_getNamesForUids = (android.os.IBinder.FIRST_CALL_TRANSACTION + 0); static final int TRANSACTION_getPackageUid = (android.os.IBinder.FIRST_CALL_TRANSACTION + 1); static final int TRANSACTION_getInstallerForPackage = (android.os.IBinder.FIRST_CALL_TRANSACTION + 2); static final int TRANSACTION_getVersionCodeForPackage = (android.os.IBinder.FIRST_CALL_TRANSACTION + 3); static final int TRANSACTION_isAudioPlaybackCaptureAllowed = (android.os.IBinder.FIRST_CALL_TRANSACTION + 4); static final int TRANSACTION_getLocationFlags = (android.os.IBinder.FIRST_CALL_TRANSACTION + 5); static final int TRANSACTION_getTargetSdkVersionForPackage = (android.os.IBinder.FIRST_CALL_TRANSACTION + 6); static final int TRANSACTION_getModuleMetadataPackageName = (android.os.IBinder.FIRST_CALL_TRANSACTION + 7); static final int TRANSACTION_hasSha256SigningCertificate = (android.os.IBinder.FIRST_CALL_TRANSACTION + 8); static final int TRANSACTION_isPackageDebuggable = (android.os.IBinder.FIRST_CALL_TRANSACTION + 9); static final int TRANSACTION_hasSystemFeature = (android.os.IBinder.FIRST_CALL_TRANSACTION + 10); static final int TRANSACTION_registerStagedApexObserver = (android.os.IBinder.FIRST_CALL_TRANSACTION + 11); static final int TRANSACTION_unregisterStagedApexObserver = (android.os.IBinder.FIRST_CALL_TRANSACTION + 12); static final int TRANSACTION_getStagedApexModuleNames = (android.os.IBinder.FIRST_CALL_TRANSACTION + 13); static final int TRANSACTION_getStagedApexInfo = (android.os.IBinder.FIRST_CALL_TRANSACTION + 14); } /** ApplicationInfo.isSystemApp() == true */ public static final int LOCATION_SYSTEM = 1; /** ApplicationInfo.isVendor() == true */ public static final int LOCATION_VENDOR = 2; /** ApplicationInfo.isProduct() == true */ public static final int LOCATION_PRODUCT = 4; /** * Returns a set of names for the given UIDs. * IMPORTANT: Unlike the Java version of this API, unknown UIDs are * not represented by 'null's. Instead, they are represented by empty * strings. */ public java.lang.String[] getNamesForUids(int[] uids) throws android.os.RemoteException; /** * Return the UID associated with the given package name. * Note that the same package will have different UIDs under different UserHandle on * the same device. * @param packageName The full name (i.e. com.google.apps.contacts) of the desired package. * @param flags Additional option flags to modify the data returned. * @param userId The user handle identifier to look up the package under. * @return Returns an integer UID who owns the given package name, or -1 if no such package is * available to the caller. */ public int getPackageUid(java.lang.String packageName, long flags, int userId) throws android.os.RemoteException; /** * Returns the name of the installer (a package) which installed the named * package. Preloaded packages return the string "preload". Sideloaded packages * return an empty string. Unknown or unknowable are returned as empty strings. */ public java.lang.String getInstallerForPackage(java.lang.String packageName) throws android.os.RemoteException; /** * Returns the version code of the named package. * Unknown or unknowable versions are returned as 0. */ public long getVersionCodeForPackage(java.lang.String packageName) throws android.os.RemoteException; /** * Return if each app, identified by its package name allows its audio to be recorded. * Unknown packages are mapped to false. */ public boolean[] isAudioPlaybackCaptureAllowed(java.lang.String[] packageNames) throws android.os.RemoteException; /** * Returns a set of bitflags about package location. * LOCATION_SYSTEM: getApplicationInfo(packageName).isSystemApp() * LOCATION_VENDOR: getApplicationInfo(packageName).isVendor() * LOCATION_PRODUCT: getApplicationInfo(packageName).isProduct() */ public int getLocationFlags(java.lang.String packageName) throws android.os.RemoteException; /** * Returns the target SDK version for the given package. * Unknown packages will cause the call to fail. The caller must check the * returned Status before using the result of this function. */ public int getTargetSdkVersionForPackage(java.lang.String packageName) throws android.os.RemoteException; /** * Returns the name of module metadata package, or empty string if device doesn't have such * package. */ public java.lang.String getModuleMetadataPackageName() throws android.os.RemoteException; /** * Returns true if the package has the SHA 256 version of the signing certificate. * @see PackageManager#hasSigningCertificate(String, byte[], int), where type * has been set to {@link PackageManager#CERT_INPUT_SHA256}. */ public boolean hasSha256SigningCertificate(java.lang.String packageName, byte[] certificate) throws android.os.RemoteException; /** * Returns the debug flag for the given package. * Unknown packages will cause the call to fail. */ public boolean isPackageDebuggable(java.lang.String packageName) throws android.os.RemoteException; /** * Check whether the given feature name and version is one of the available * features as returned by {@link PackageManager#getSystemAvailableFeatures()}. Since * features are defined to always be backwards compatible, this returns true * if the available feature version is greater than or equal to the * requested version. */ public boolean hasSystemFeature(java.lang.String featureName, int version) throws android.os.RemoteException; /** Register a observer for change in set of staged APEX ready for installation */ public void registerStagedApexObserver(android.content.pm.IStagedApexObserver observer) throws android.os.RemoteException; /** * Unregister an existing staged apex observer. * This does nothing if this observer was not already registered. */ public void unregisterStagedApexObserver(android.content.pm.IStagedApexObserver observer) throws android.os.RemoteException; /** Get APEX module names of all APEX that are staged ready for installation */ public java.lang.String[] getStagedApexModuleNames() throws android.os.RemoteException; /** * Get information of APEX which is staged ready for installation. * Returns null if no such APEX is found. */ public android.content.pm.StagedApexInfo getStagedApexInfo(java.lang.String moduleName) throws android.os.RemoteException; }