FileDocCategorySizeDatePackage
PackageManager.javaAPI DocAndroid 5.1 API180312Thu Mar 12 22:22:10 GMT 2015android.content.pm

PackageManager

public abstract class PackageManager extends Object
Class for retrieving various kinds of information related to the application packages that are currently installed on the device. You can find this class through {@link Context#getPackageManager}.

Fields Summary
public static final int
GET_ACTIVITIES
{@link PackageInfo} flag: return information about activities in the package in {@link PackageInfo#activities}.
public static final int
GET_RECEIVERS
{@link PackageInfo} flag: return information about intent receivers in the package in {@link PackageInfo#receivers}.
public static final int
GET_SERVICES
{@link PackageInfo} flag: return information about services in the package in {@link PackageInfo#services}.
public static final int
GET_PROVIDERS
{@link PackageInfo} flag: return information about content providers in the package in {@link PackageInfo#providers}.
public static final int
GET_INSTRUMENTATION
{@link PackageInfo} flag: return information about instrumentation in the package in {@link PackageInfo#instrumentation}.
public static final int
GET_INTENT_FILTERS
{@link PackageInfo} flag: return information about the intent filters supported by the activity.
public static final int
GET_SIGNATURES
{@link PackageInfo} flag: return information about the signatures included in the package.
public static final int
GET_RESOLVED_FILTER
{@link ResolveInfo} flag: return the IntentFilter that was matched for a particular ResolveInfo in {@link ResolveInfo#filter}.
public static final int
GET_META_DATA
{@link ComponentInfo} flag: return the {@link ComponentInfo#metaData} data {@link android.os.Bundle}s that are associated with a component. This applies for any API returning a ComponentInfo subclass.
public static final int
GET_GIDS
{@link PackageInfo} flag: return the {@link PackageInfo#gids group ids} that are associated with an application. This applies for any API returning a PackageInfo class, either directly or nested inside of another.
public static final int
GET_DISABLED_COMPONENTS
{@link PackageInfo} flag: include disabled components in the returned info.
public static final int
GET_SHARED_LIBRARY_FILES
{@link ApplicationInfo} flag: return the {@link ApplicationInfo#sharedLibraryFiles paths to the shared libraries} that are associated with an application. This applies for any API returning an ApplicationInfo class, either directly or nested inside of another.
public static final int
GET_URI_PERMISSION_PATTERNS
{@link ProviderInfo} flag: return the {@link ProviderInfo#uriPermissionPatterns URI permission patterns} that are associated with a content provider. This applies for any API returning a ProviderInfo class, either directly or nested inside of another.
public static final int
GET_PERMISSIONS
{@link PackageInfo} flag: return information about permissions in the package in {@link PackageInfo#permissions}.
public static final int
GET_UNINSTALLED_PACKAGES
Flag parameter to retrieve some information about all applications (even uninstalled ones) which have data directories. This state could have resulted if applications have been deleted with flag {@code DONT_DELETE_DATA} with a possibility of being replaced or reinstalled in future.

Note: this flag may cause less information about currently installed applications to be returned.

public static final int
GET_CONFIGURATIONS
{@link PackageInfo} flag: return information about hardware preferences in {@link PackageInfo#configPreferences PackageInfo.configPreferences}, and requested features in {@link PackageInfo#reqFeatures} and {@link PackageInfo#featureGroups}.
public static final int
GET_DISABLED_UNTIL_USED_COMPONENTS
{@link PackageInfo} flag: include disabled components which are in that state only because of {@link #COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED} in the returned info. Note that if you set this flag, applications that are in this disabled state will be reported as enabled.
public static final int
MATCH_DEFAULT_ONLY
Resolution and querying flag: if set, only filters that support the {@link android.content.Intent#CATEGORY_DEFAULT} will be considered for matching. This is a synonym for including the CATEGORY_DEFAULT in your supplied Intent.
public static final int
SKIP_CURRENT_PROFILE
Flag for {@link addCrossProfileIntentFilter}: if this flag is set: when resolving an intent that matches the {@link CrossProfileIntentFilter}, the current profile will be skipped. Only activities in the target user can respond to the intent.
public static final int
PERMISSION_GRANTED
Permission check result: this is returned by {@link #checkPermission} if the permission has been granted to the given package.
public static final int
PERMISSION_DENIED
Permission check result: this is returned by {@link #checkPermission} if the permission has not been granted to the given package.
public static final int
SIGNATURE_MATCH
Signature check result: this is returned by {@link #checkSignatures} if all signatures on the two packages match.
public static final int
SIGNATURE_NEITHER_SIGNED
Signature check result: this is returned by {@link #checkSignatures} if neither of the two packages is signed.
public static final int
SIGNATURE_FIRST_NOT_SIGNED
Signature check result: this is returned by {@link #checkSignatures} if the first package is not signed but the second is.
public static final int
SIGNATURE_SECOND_NOT_SIGNED
Signature check result: this is returned by {@link #checkSignatures} if the second package is not signed but the first is.
public static final int
SIGNATURE_NO_MATCH
Signature check result: this is returned by {@link #checkSignatures} if not all signatures on both packages match.
public static final int
SIGNATURE_UNKNOWN_PACKAGE
Signature check result: this is returned by {@link #checkSignatures} if either of the packages are not valid.
public static final int
COMPONENT_ENABLED_STATE_DEFAULT
Flag for {@link #setApplicationEnabledSetting(String, int, int)} and {@link #setComponentEnabledSetting(ComponentName, int, int)}: This component or application is in its default enabled state (as specified in its manifest).
public static final int
COMPONENT_ENABLED_STATE_ENABLED
Flag for {@link #setApplicationEnabledSetting(String, int, int)} and {@link #setComponentEnabledSetting(ComponentName, int, int)}: This component or application has been explictily enabled, regardless of what it has specified in its manifest.
public static final int
COMPONENT_ENABLED_STATE_DISABLED
Flag for {@link #setApplicationEnabledSetting(String, int, int)} and {@link #setComponentEnabledSetting(ComponentName, int, int)}: This component or application has been explicitly disabled, regardless of what it has specified in its manifest.
public static final int
COMPONENT_ENABLED_STATE_DISABLED_USER
Flag for {@link #setApplicationEnabledSetting(String, int, int)} only: The user has explicitly disabled the application, regardless of what it has specified in its manifest. Because this is due to the user's request, they may re-enable it if desired through the appropriate system UI. This option currently cannot be used with {@link #setComponentEnabledSetting(ComponentName, int, int)}.
public static final int
COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED
Flag for {@link #setApplicationEnabledSetting(String, int, int)} only: This application should be considered, until the point where the user actually wants to use it. This means that it will not normally show up to the user (such as in the launcher), but various parts of the user interface can use {@link #GET_DISABLED_UNTIL_USED_COMPONENTS} to still see it and allow the user to select it (as for example an IME, device admin, etc). Such code, once the user has selected the app, should at that point also make it enabled. This option currently can not be used with {@link #setComponentEnabledSetting(ComponentName, int, int)}.
public static final int
INSTALL_FORWARD_LOCK
Flag parameter for {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} to indicate that this package should be installed as forward locked, i.e. only the app itself should have access to its code and non-resource assets.
public static final int
INSTALL_REPLACE_EXISTING
Flag parameter for {@link #installPackage} to indicate that you want to replace an already installed package, if one exists.
public static final int
INSTALL_ALLOW_TEST
Flag parameter for {@link #installPackage} to indicate that you want to allow test packages (those that have set android:testOnly in their manifest) to be installed.
public static final int
INSTALL_EXTERNAL
Flag parameter for {@link #installPackage} to indicate that this package has to be installed on the sdcard.
public static final int
INSTALL_INTERNAL
Flag parameter for {@link #installPackage} to indicate that this package has to be installed on the sdcard.
public static final int
INSTALL_FROM_ADB
Flag parameter for {@link #installPackage} to indicate that this install was initiated via ADB.
public static final int
INSTALL_ALL_USERS
Flag parameter for {@link #installPackage} to indicate that this install should immediately be visible to all users.
public static final int
INSTALL_ALLOW_DOWNGRADE
Flag parameter for {@link #installPackage} to indicate that it is okay to install an update to an app where the newly installed app has a lower version code than the currently installed app.
public static final int
DONT_KILL_APP
Flag parameter for {@link #setComponentEnabledSetting(android.content.ComponentName, int, int)} to indicate that you don't want to kill the app containing the component. Be careful when you set this since changing component states can make the containing application's behavior unpredictable.
public static final int
INSTALL_SUCCEEDED
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} on success.
public static final int
INSTALL_FAILED_ALREADY_EXISTS
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the package is already installed.
public static final int
INSTALL_FAILED_INVALID_APK
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the package archive file is invalid.
public static final int
INSTALL_FAILED_INVALID_URI
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the URI passed in is invalid.
public static final int
INSTALL_FAILED_INSUFFICIENT_STORAGE
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the package manager service found that the device didn't have enough storage space to install the app.
public static final int
INSTALL_FAILED_DUPLICATE_PACKAGE
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if a package is already installed with the same name.
public static final int
INSTALL_FAILED_NO_SHARED_USER
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the requested shared user does not exist.
public static final int
INSTALL_FAILED_UPDATE_INCOMPATIBLE
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if a previously installed package of the same name has a different signature than the new package (and the old package's data was not removed).
public static final int
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the new package is requested a shared user which is already installed on the device and does not have matching signature.
public static final int
INSTALL_FAILED_MISSING_SHARED_LIBRARY
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the new package uses a shared library that is not available.
public static final int
INSTALL_FAILED_REPLACE_COULDNT_DELETE
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the new package uses a shared library that is not available.
public static final int
INSTALL_FAILED_DEXOPT
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the new package failed while optimizing and validating its dex files, either because there was not enough storage or the validation failed.
public static final int
INSTALL_FAILED_OLDER_SDK
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the new package failed because the current SDK version is older than that required by the package.
public static final int
INSTALL_FAILED_CONFLICTING_PROVIDER
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the new package failed because it contains a content provider with the same authority as a provider already installed in the system.
public static final int
INSTALL_FAILED_NEWER_SDK
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the new package failed because the current SDK version is newer than that required by the package.
public static final int
INSTALL_FAILED_TEST_ONLY
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the new package failed because it has specified that it is a test-only package and the caller has not supplied the {@link #INSTALL_ALLOW_TEST} flag.
public static final int
INSTALL_FAILED_CPU_ABI_INCOMPATIBLE
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the package being installed contains native code, but none that is compatible with the device's CPU_ABI.
public static final int
INSTALL_FAILED_MISSING_FEATURE
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the new package uses a feature that is not available.
public static final int
INSTALL_FAILED_CONTAINER_ERROR
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if a secure container mount point couldn't be accessed on external media.
public static final int
INSTALL_FAILED_INVALID_INSTALL_LOCATION
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the new package couldn't be installed in the specified install location.
public static final int
INSTALL_FAILED_MEDIA_UNAVAILABLE
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the new package couldn't be installed in the specified install location because the media is not available.
public static final int
INSTALL_FAILED_VERIFICATION_TIMEOUT
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the new package couldn't be installed because the verification timed out.
public static final int
INSTALL_FAILED_VERIFICATION_FAILURE
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the new package couldn't be installed because the verification did not succeed.
public static final int
INSTALL_FAILED_PACKAGE_CHANGED
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the package changed from what the calling program expected.
public static final int
INSTALL_FAILED_UID_CHANGED
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the new package is assigned a different UID than it previously held.
public static final int
INSTALL_FAILED_VERSION_DOWNGRADE
Installation return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the new package has an older version code than the currently installed package.
public static final int
INSTALL_PARSE_FAILED_NOT_APK
Installation parse return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the parser was given a path that is not a file, or does not end with the expected '.apk' extension.
public static final int
INSTALL_PARSE_FAILED_BAD_MANIFEST
Installation parse return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the parser was unable to retrieve the AndroidManifest.xml file.
public static final int
INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION
Installation parse return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the parser encountered an unexpected exception.
public static final int
INSTALL_PARSE_FAILED_NO_CERTIFICATES
Installation parse return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the parser did not find any certificates in the .apk.
public static final int
INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES
Installation parse return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the parser found inconsistent certificates on the files in the .apk.
public static final int
INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING
Installation parse return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the parser encountered a CertificateEncodingException in one of the files in the .apk.
public static final int
INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME
Installation parse return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the parser encountered a bad or missing package name in the manifest.
public static final int
INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID
Installation parse return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the parser encountered a bad shared user id name in the manifest.
public static final int
INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
Installation parse return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the parser encountered some structural problem in the manifest.
public static final int
INSTALL_PARSE_FAILED_MANIFEST_EMPTY
Installation parse return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the parser did not find any actionable tags (instrumentation or application) in the manifest.
public static final int
INSTALL_FAILED_INTERNAL_ERROR
Installation failed return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the system failed to install the package because of system issues.
public static final int
INSTALL_FAILED_USER_RESTRICTED
Installation failed return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the system failed to install the package because the user is restricted from installing apps.
public static final int
INSTALL_FAILED_DUPLICATE_PERMISSION
Installation failed return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the system failed to install the package because it is attempting to define a permission that is already defined by some existing package.

The package name of the app which has already defined the permission is passed to a {@link PackageInstallObserver}, if any, as the {@link #EXTRA_EXISTING_PACKAGE} string extra; and the name of the permission being redefined is passed in the {@link #EXTRA_EXISTING_PERMISSION} string extra.

public static final int
INSTALL_FAILED_NO_MATCHING_ABIS
Installation failed return code: this is passed to the {@link IPackageInstallObserver} by {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the system failed to install the package because its packaged native code did not match any of the ABIs supported by the system.
public static final int
NO_NATIVE_LIBRARIES
Internal return code for NativeLibraryHelper methods to indicate that the package being processed did not contain any native code. This is placed here only so that it can belong to the same value space as the other install failure codes.
public static final int
INSTALL_FAILED_ABORTED
{@hide}
public static final int
DELETE_KEEP_DATA
Flag parameter for {@link #deletePackage} to indicate that you don't want to delete the package's data directory.
public static final int
DELETE_ALL_USERS
Flag parameter for {@link #deletePackage} to indicate that you want the package deleted for all users.
public static final int
DELETE_SYSTEM_APP
Flag parameter for {@link #deletePackage} to indicate that, if you are calling uninstall on a system that has been updated, then don't do the normal process of uninstalling the update and rolling back to the older system version (which needs to happen for all users); instead, just mark the app as uninstalled for the current user.
public static final int
DELETE_SUCCEEDED
Return code for when package deletion succeeds. This is passed to the {@link IPackageDeleteObserver} by {@link #deletePackage()} if the system succeeded in deleting the package.
public static final int
DELETE_FAILED_INTERNAL_ERROR
Deletion failed return code: this is passed to the {@link IPackageDeleteObserver} by {@link #deletePackage()} if the system failed to delete the package for an unspecified reason.
public static final int
DELETE_FAILED_DEVICE_POLICY_MANAGER
Deletion failed return code: this is passed to the {@link IPackageDeleteObserver} by {@link #deletePackage()} if the system failed to delete the package because it is the active DevicePolicy manager.
public static final int
DELETE_FAILED_USER_RESTRICTED
Deletion failed return code: this is passed to the {@link IPackageDeleteObserver} by {@link #deletePackage()} if the system failed to delete the package since the user is restricted.
public static final int
DELETE_FAILED_OWNER_BLOCKED
Deletion failed return code: this is passed to the {@link IPackageDeleteObserver} by {@link #deletePackage()} if the system failed to delete the package because a profile or device owner has marked the package as uninstallable.
public static final int
DELETE_FAILED_ABORTED
{@hide}
public static final int
MOVE_SUCCEEDED
Return code that is passed to the {@link IPackageMoveObserver} by {@link #movePackage(android.net.Uri, IPackageMoveObserver)} when the package has been successfully moved by the system.
public static final int
MOVE_FAILED_INSUFFICIENT_STORAGE
Error code that is passed to the {@link IPackageMoveObserver} by {@link #movePackage(android.net.Uri, IPackageMoveObserver)} when the package hasn't been successfully moved by the system because of insufficient memory on specified media.
public static final int
MOVE_FAILED_DOESNT_EXIST
Error code that is passed to the {@link IPackageMoveObserver} by {@link #movePackage(android.net.Uri, IPackageMoveObserver)} if the specified package doesn't exist.
public static final int
MOVE_FAILED_SYSTEM_PACKAGE
Error code that is passed to the {@link IPackageMoveObserver} by {@link #movePackage(android.net.Uri, IPackageMoveObserver)} if the specified package cannot be moved since its a system package.
public static final int
MOVE_FAILED_FORWARD_LOCKED
Error code that is passed to the {@link IPackageMoveObserver} by {@link #movePackage(android.net.Uri, IPackageMoveObserver)} if the specified package cannot be moved since its forward locked.
public static final int
MOVE_FAILED_INVALID_LOCATION
Error code that is passed to the {@link IPackageMoveObserver} by {@link #movePackage(android.net.Uri, IPackageMoveObserver)} if the specified package cannot be moved to the specified location.
public static final int
MOVE_FAILED_INTERNAL_ERROR
Error code that is passed to the {@link IPackageMoveObserver} by {@link #movePackage(android.net.Uri, IPackageMoveObserver)} if the specified package cannot be moved to the specified location.
public static final int
MOVE_FAILED_OPERATION_PENDING
Error code that is passed to the {@link IPackageMoveObserver} by {@link #movePackage(android.net.Uri, IPackageMoveObserver)} if the specified package already has an operation pending in the {@link PackageHandler} queue.
public static final int
MOVE_INTERNAL
Flag parameter for {@link #movePackage} to indicate that the package should be moved to internal storage if its been installed on external media.
public static final int
MOVE_EXTERNAL_MEDIA
Flag parameter for {@link #movePackage} to indicate that the package should be moved to external media.
public static final int
VERIFICATION_ALLOW_WITHOUT_SUFFICIENT
Usable by the required verifier as the {@code verificationCode} argument for {@link PackageManager#verifyPendingInstall} to indicate that it will allow the installation to proceed without any of the optional verifiers needing to vote.
public static final int
VERIFICATION_ALLOW
Used as the {@code verificationCode} argument for {@link PackageManager#verifyPendingInstall} to indicate that the calling package verifier allows the installation to proceed.
public static final int
VERIFICATION_REJECT
Used as the {@code verificationCode} argument for {@link PackageManager#verifyPendingInstall} to indicate the calling package verifier does not vote to allow the installation to proceed.
public static final long
MAXIMUM_VERIFICATION_TIMEOUT
Can be used as the {@code millisecondsToDelay} argument for {@link PackageManager#extendVerificationTimeout}. This is the maximum time {@code PackageManager} waits for the verification agent to return (in milliseconds).
public static final String
FEATURE_AUDIO_LOW_LATENCY
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device's audio pipeline is low-latency, more suitable for audio applications sensitive to delays or lag in sound input or output.
public static final String
FEATURE_AUDIO_OUTPUT
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device includes at least one form of audio output, such as speakers, audio jack or streaming over bluetooth
public static final String
FEATURE_BLUETOOTH
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device is capable of communicating with other devices via Bluetooth.
public static final String
FEATURE_BLUETOOTH_LE
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device is capable of communicating with other devices via Bluetooth Low Energy radio.
public static final String
FEATURE_CAMERA
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device has a camera facing away from the screen.
public static final String
FEATURE_CAMERA_AUTOFOCUS
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device's camera supports auto-focus.
public static final String
FEATURE_CAMERA_ANY
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device has at least one camera pointing in some direction, or can support an external camera being connected to it.
public static final String
FEATURE_CAMERA_EXTERNAL
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device can support having an external camera connected to it. The external camera may not always be connected or available to applications to use.
public static final String
FEATURE_CAMERA_FLASH
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device's camera supports flash.
public static final String
FEATURE_CAMERA_FRONT
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device has a front facing camera.
public static final String
FEATURE_CAMERA_LEVEL_FULL
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: At least one of the cameras on the device supports the {@link android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL full hardware} capability level.
public static final String
FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: At least one of the cameras on the device supports the {@link android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR manual sensor} capability level.
public static final String
FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: At least one of the cameras on the device supports the {@link android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING manual post-processing} capability level.
public static final String
FEATURE_CAMERA_CAPABILITY_RAW
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: At least one of the cameras on the device supports the {@link android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW RAW} capability level.
public static final String
FEATURE_CONSUMER_IR
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device is capable of communicating with consumer IR devices.
public static final String
FEATURE_LOCATION
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports one or more methods of reporting current location.
public static final String
FEATURE_LOCATION_GPS
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device has a Global Positioning System receiver and can report precise location.
public static final String
FEATURE_LOCATION_NETWORK
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device can report location with coarse accuracy using a network-based geolocation system.
public static final String
FEATURE_MICROPHONE
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device can record audio via a microphone.
public static final String
FEATURE_NFC
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device can communicate using Near-Field Communications (NFC).
public static final String
FEATURE_NFC_HCE
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports host- based NFC card emulation. TODO remove when depending apps have moved to new constant.
public static final String
FEATURE_NFC_HOST_CARD_EMULATION
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports host- based NFC card emulation.
public static final String
FEATURE_OPENGLES_EXTENSION_PACK
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports the OpenGL ES Android Extension Pack.
public static final String
FEATURE_SENSOR_ACCELEROMETER
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device includes an accelerometer.
public static final String
FEATURE_SENSOR_BAROMETER
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device includes a barometer (air pressure sensor.)
public static final String
FEATURE_SENSOR_COMPASS
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device includes a magnetometer (compass).
public static final String
FEATURE_SENSOR_GYROSCOPE
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device includes a gyroscope.
public static final String
FEATURE_SENSOR_LIGHT
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device includes a light sensor.
public static final String
FEATURE_SENSOR_PROXIMITY
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device includes a proximity sensor.
public static final String
FEATURE_SENSOR_STEP_COUNTER
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device includes a hardware step counter.
public static final String
FEATURE_SENSOR_STEP_DETECTOR
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device includes a hardware step detector.
public static final String
FEATURE_SENSOR_HEART_RATE
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device includes a heart rate monitor.
public static final String
FEATURE_SENSOR_HEART_RATE_ECG
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The heart rate sensor on this device is an Electrocargiogram.
public static final String
FEATURE_SENSOR_RELATIVE_HUMIDITY
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device includes a relative humidity sensor.
public static final String
FEATURE_SENSOR_AMBIENT_TEMPERATURE
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device includes an ambient temperature sensor.
public static final String
FEATURE_TELEPHONY
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device has a telephony radio with data communication support.
public static final String
FEATURE_TELEPHONY_CDMA
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device has a CDMA telephony stack.
public static final String
FEATURE_TELEPHONY_GSM
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device has a GSM telephony stack.
public static final String
FEATURE_USB_HOST
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports connecting to USB devices as the USB host.
public static final String
FEATURE_USB_ACCESSORY
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports connecting to USB accessories.
public static final String
FEATURE_SIP
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The SIP API is enabled on the device.
public static final String
FEATURE_SIP_VOIP
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports SIP-based VOIP.
public static final String
FEATURE_CONNECTION_SERVICE
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The Connection Service API is enabled on the device.
public static final String
FEATURE_TOUCHSCREEN
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device's display has a touch screen.
public static final String
FEATURE_TOUCHSCREEN_MULTITOUCH
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device's touch screen supports multitouch sufficient for basic two-finger gesture detection.
public static final String
FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device's touch screen is capable of tracking two or more fingers fully independently.
public static final String
FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device's touch screen is capable of tracking a full hand of fingers fully independently -- that is, 5 or more simultaneous independent pointers.
public static final String
FEATURE_FAKETOUCH
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device does not have a touch screen, but does support touch emulation for basic events. For instance, the device might use a mouse or remote control to drive a cursor, and emulate basic touch pointer events like down, up, drag, etc. All devices that support android.hardware.touchscreen or a sub-feature are presumed to also support faketouch.
public static final String
FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device does not have a touch screen, but does support touch emulation for basic events that supports distinct tracking of two or more fingers. This is an extension of {@link #FEATURE_FAKETOUCH} for input devices with this capability. Note that unlike a distinct multitouch screen as defined by {@link #FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT}, these kinds of input devices will not actually provide full two-finger gestures since the input is being transformed to cursor movement on the screen. That is, single finger gestures will move a cursor; two-finger swipes will result in single-finger touch events; other two-finger gestures will result in the corresponding two-finger touch event.
public static final String
FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device does not have a touch screen, but does support touch emulation for basic events that supports tracking a hand of fingers (5 or more fingers) fully independently. This is an extension of {@link #FEATURE_FAKETOUCH} for input devices with this capability. Note that unlike a multitouch screen as defined by {@link #FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND}, not all two finger gestures can be detected due to the limitations described for {@link #FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT}.
public static final String
FEATURE_SCREEN_PORTRAIT
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports portrait orientation screens. For backwards compatibility, you can assume that if neither this nor {@link #FEATURE_SCREEN_LANDSCAPE} is set then the device supports both portrait and landscape.
public static final String
FEATURE_SCREEN_LANDSCAPE
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports landscape orientation screens. For backwards compatibility, you can assume that if neither this nor {@link #FEATURE_SCREEN_PORTRAIT} is set then the device supports both portrait and landscape.
public static final String
FEATURE_LIVE_WALLPAPER
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports live wallpapers.
public static final String
FEATURE_APP_WIDGETS
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports app widgets.
public static final String
FEATURE_VOICE_RECOGNIZERS
public static final String
FEATURE_HOME_SCREEN
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports a home screen that is replaceable by third party applications.
public static final String
FEATURE_INPUT_METHODS
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports adding new input methods implemented with the {@link android.inputmethodservice.InputMethodService} API.
public static final String
FEATURE_DEVICE_ADMIN
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports device policy enforcement via device admins.
public static final String
FEATURE_LEANBACK
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports leanback UI. This is typically used in a living room television experience, but is a software feature unlike {@link #FEATURE_TELEVISION}. Devices running with this feature will use resources associated with the "television" UI mode.
public static final String
FEATURE_LEANBACK_ONLY
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports only leanback UI. Only applications designed for this experience should be run, though this is not enforced by the system.
public static final String
FEATURE_LIVE_TV
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports live TV and can display contents from TV inputs implemented with the {@link android.media.tv.TvInputService} API.
public static final String
FEATURE_WIFI
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports WiFi (802.11) networking.
public static final String
FEATURE_WIFI_DIRECT
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports Wi-Fi Direct networking.
public static final String
FEATURE_TELEVISION
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: This is a device dedicated to showing UI on a television. Television here is defined to be a typical living room television experience: displayed on a big screen, where the user is sitting far away from it, and the dominant form of input will be something like a DPAD, not through touch or mouse.
public static final String
FEATURE_WATCH
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: This is a device dedicated to showing UI on a watch. A watch here is defined to be a device worn on the body, perhaps on the wrist. The user is very close when interacting with the device.
public static final String
FEATURE_PRINTING
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports printing.
public static final String
FEATURE_BACKUP
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device can perform backup and restore operations on installed applications.
public static final String
FEATURE_MANAGED_USERS
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports creating secondary users and managed profiles via {@link DevicePolicyManager}.
public static final String
FEATURE_MANAGED_PROFILES
public static final String
FEATURE_VERIFIED_BOOT
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports verified boot.
public static final String
FEATURE_SECURELY_REMOVES_USERS
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device supports secure removal of users. When a user is deleted the data associated with that user is securely deleted and no longer available.
public static final String
FEATURE_WEBVIEW
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device has a full implementation of the android.webkit.* APIs. Devices lacking this feature will not have a functioning WebView implementation.
public static final String
FEATURE_ETHERNET
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: This device supports ethernet.
public static final String
FEATURE_HDMI_CEC
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: This device supports HDMI-CEC.
public static final String
FEATURE_GAMEPAD
Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device has all of the inputs necessary to be considered a compatible game controller, or includes a compatible game controller in the box.
public static final String
ACTION_CLEAN_EXTERNAL_STORAGE
Action to external storage service to clean out removed apps.
public static final String
EXTRA_VERIFICATION_URI
Extra field name for the URI to a verification file. Passed to a package verifier.
public static final String
EXTRA_VERIFICATION_ID
Extra field name for the ID of a package pending verification. Passed to a package verifier and is used to call back to {@link PackageManager#verifyPendingInstall(int, int)}
public static final String
EXTRA_VERIFICATION_INSTALLER_PACKAGE
Extra field name for the package identifier which is trying to install the package.
public static final String
EXTRA_VERIFICATION_INSTALL_FLAGS
Extra field name for the requested install flags for a package pending verification. Passed to a package verifier.
public static final String
EXTRA_VERIFICATION_INSTALLER_UID
Extra field name for the uid of who is requesting to install the package.
public static final String
EXTRA_VERIFICATION_PACKAGE_NAME
Extra field name for the package name of a package pending verification.
public static final String
EXTRA_VERIFICATION_RESULT
Extra field name for the result of a verification, either {@link #VERIFICATION_ALLOW}, or {@link #VERIFICATION_REJECT}. Passed to package verifiers after a package is verified.
public static final String
EXTRA_VERIFICATION_VERSION_CODE
Extra field name for the version code of a package pending verification.
public static final String
ACTION_REQUEST_PERMISSION
The action used to request that the user approve a permission request from the application.
public static final String
EXTRA_REQUEST_PERMISSION_PERMISSION_LIST
Extra field name for the list of permissions, which the user must approve.
public static final String
EXTRA_FAILURE_EXISTING_PACKAGE
String extra for {@link PackageInstallObserver} in the 'extras' Bundle in case of {@link #INSTALL_FAILED_DUPLICATE_PERMISSION}. This extra names the package which provides the existing definition for the permission.
public static final String
EXTRA_FAILURE_EXISTING_PERMISSION
String extra for {@link PackageInstallObserver} in the 'extras' Bundle in case of {@link #INSTALL_FAILED_DUPLICATE_PERMISSION}. This extra names the permission that is being redundantly defined by the package being installed.
Constructors Summary
Methods Summary
public abstract voidaddCrossProfileIntentFilter(android.content.IntentFilter filter, int sourceUserId, int targetUserId, int flags)
Adds a {@link CrossProfileIntentFilter}. After calling this method all intents sent from the user with id sourceUserId can also be be resolved by activities in the user with id targetUserId if they match the specified intent filter.

param
filter The {@link IntentFilter} the intent has to match
param
sourceUserId The source user id.
param
targetUserId The target user id.
param
flags The only possible value is {@link SKIP_CURRENT_PROFILE}
hide

public abstract voidaddPackageToPreferred(java.lang.String packageName)

deprecated
This function no longer does anything; it was an old approach to managing preferred activities, which has been superseded by (and conflicts with) the modern activity-based preferences.

public abstract booleanaddPermission(PermissionInfo info)
Add a new dynamic permission to the system. For this to work, your package must have defined a permission tree through the {@link android.R.styleable#AndroidManifestPermissionTree <permission-tree>} tag in its manifest. A package can only add permissions to trees that were defined by either its own package or another with the same user id; a permission is in a tree if it matches the name of the permission tree + ".": for example, "com.foo.bar" is a member of the permission tree "com.foo".

It is good to make your permission tree name descriptive, because you are taking possession of that entire set of permission names. Thus, it must be under a domain you control, with a suffix that will not match any normal permissions that may be declared in any applications that are part of that domain.

New permissions must be added before any .apks are installed that use those permissions. Permissions you add through this method are remembered across reboots of the device. If the given permission already exists, the info you supply here will be used to update it.

param
info Description of the permission to be added.
return
Returns true if a new permission was created, false if an existing one was updated.
throws
SecurityException if you are not allowed to add the given permission name.
see
#removePermission(String)

public abstract booleanaddPermissionAsync(PermissionInfo info)
Like {@link #addPermission(PermissionInfo)} but asynchronously persists the package manager state after returning from the call, allowing it to return quicker and batch a series of adds at the expense of no guarantee the added permission will be retained if the device is rebooted before it is written.

public abstract voidaddPreferredActivity(android.content.IntentFilter filter, int match, android.content.ComponentName[] set, android.content.ComponentName activity)

deprecated
This is a protected API that should not have been available to third party applications. It is the platform's responsibility for assigning preferred activities and this cannot be directly modified. Add a new preferred activity mapping to the system. This will be used to automatically select the given activity component when {@link Context#startActivity(Intent) Context.startActivity()} finds multiple matching activities and also matches the given filter.
param
filter The set of intents under which this activity will be made preferred.
param
match The IntentFilter match category that this preference applies to.
param
set The set of activities that the user was picking from when this preference was made.
param
activity The component name of the activity that is to be preferred.

public voidaddPreferredActivity(android.content.IntentFilter filter, int match, android.content.ComponentName[] set, android.content.ComponentName activity, int userId)
Same as {@link #addPreferredActivity(IntentFilter, int, ComponentName[], ComponentName)}, but with a specific userId to apply the preference to.

hide

        throw new RuntimeException("Not implemented. Must override in a subclass.");
    
public android.content.IntentbuildPermissionRequestIntent(java.lang.String permissions)
Returns an {@link Intent} suitable for passing to {@code startActivityForResult} which prompts the user to grant {@code permissions} to this application.

hide
throws
NullPointerException if {@code permissions} is {@code null}.
throws
IllegalArgumentException if {@code permissions} contains {@code null}.


                                                                                                                                                                                                                                                                                                   
          
             

                                                         
        

                                                   
        

                                                                                                              
        

                                                                                                                                   
        

                                                                                       
        
             

                                                                                             
          
             

                                                                                                  
          
             

                                                                                                                       
        
               

                                                                                              
        
               

                                                     
        

                                                                                                                                                                                                                           
        
               

                                                                                    
        
               

                                                                                   
        
               

                                                                                
        
               

                                                                                 
        
               

                                                                                                                                                                            
        

                                                                                                     
       
               

                                                                                                                                                                                                            
          

                                                                   
          

                                                                                                                                                                                                                                       
        

                                                        
        

                                                               
        

                                               
        
        if (permissions == null) {
            throw new NullPointerException("permissions cannot be null");
        }
        for (String permission : permissions) {
            if (permission == null) {
                throw new IllegalArgumentException("permissions cannot contain null");
            }
        }

        Intent i = new Intent(ACTION_REQUEST_PERMISSION);
        i.putExtra(EXTRA_REQUEST_PERMISSION_PERMISSION_LIST, permissions);
        i.setPackage("com.android.packageinstaller");
        return i;
    
public abstract java.lang.String[]canonicalToCurrentPackageNames(java.lang.String[] names)
Map from a packages canonical name to the current name in use on the device.

param
names Array of new names to be mapped.
return
Returns an array of the same size as the original, containing the current name for each package.

public abstract intcheckPermission(java.lang.String permName, java.lang.String pkgName)
Check whether a particular package has been granted a particular permission.

param
permName The name of the permission you are checking for,
param
pkgName The name of the package you are checking against.
return
If the package has the permission, PERMISSION_GRANTED is returned. If it does not have the permission, PERMISSION_DENIED is returned.
see
#PERMISSION_GRANTED
see
#PERMISSION_DENIED

public abstract intcheckSignatures(java.lang.String pkg1, java.lang.String pkg2)
Compare the signatures of two packages to determine if the same signature appears in both of them. If they do contain the same signature, then they are allowed special privileges when working with each other: they can share the same user-id, run instrumentation against each other, etc.

param
pkg1 First package name whose signature will be compared.
param
pkg2 Second package name whose signature will be compared.
return
Returns an integer indicating whether all signatures on the two packages match. The value is >= 0 ({@link #SIGNATURE_MATCH}) if all signatures match or < 0 if there is not a match ({@link #SIGNATURE_NO_MATCH} or {@link #SIGNATURE_UNKNOWN_PACKAGE}).
see
#checkSignatures(int, int)
see
#SIGNATURE_MATCH
see
#SIGNATURE_NO_MATCH
see
#SIGNATURE_UNKNOWN_PACKAGE

public abstract intcheckSignatures(int uid1, int uid2)
Like {@link #checkSignatures(String, String)}, but takes UIDs of the two packages to be checked. This can be useful, for example, when doing the check in an IPC, where the UID is the only identity available. It is functionally identical to determining the package associated with the UIDs and checking their signatures.

param
uid1 First UID whose signature will be compared.
param
uid2 Second UID whose signature will be compared.
return
Returns an integer indicating whether all signatures on the two packages match. The value is >= 0 ({@link #SIGNATURE_MATCH}) if all signatures match or < 0 if there is not a match ({@link #SIGNATURE_NO_MATCH} or {@link #SIGNATURE_UNKNOWN_PACKAGE}).
see
#checkSignatures(String, String)
see
#SIGNATURE_MATCH
see
#SIGNATURE_NO_MATCH
see
#SIGNATURE_UNKNOWN_PACKAGE

public abstract voidclearApplicationUserData(java.lang.String packageName, IPackageDataObserver observer)
Attempts to clear the user data directory of an application. Since this may take a little while, the result will be posted back to the given observer. A deletion will fail if the named package cannot be found, or if the named package is a "system package".

param
packageName The name of the package
param
observer An observer callback to get notified when the operation is finished {@link android.content.pm.IPackageDataObserver#onRemoveCompleted(String, boolean)} will be called when that happens. observer may be null to indicate that no callback is desired.
hide

public abstract voidclearCrossProfileIntentFilters(int sourceUserId)
Clearing {@link CrossProfileIntentFilter}s which have the specified user as their source, and have been set by the app calling this method.

param
sourceUserId The source user id.
hide

public abstract voidclearPackagePreferredActivities(java.lang.String packageName)
Remove all preferred activity mappings, previously added with {@link #addPreferredActivity}, from the system whose activities are implemented in the given package name. An application can only clear its own package(s).

param
packageName The name of the package whose preferred activity mappings are to be removed.

public abstract java.lang.String[]currentToCanonicalPackageNames(java.lang.String[] names)
Map from the current package names in use on the device to whatever the current canonical name of that package is.

param
names Array of current names to be mapped.
return
Returns an array of the same size as the original, containing the canonical name for each package.

public abstract voiddeleteApplicationCacheFiles(java.lang.String packageName, IPackageDataObserver observer)
Attempts to delete the cache files associated with an application. Since this may take a little while, the result will be posted back to the given observer. A deletion will fail if the calling context lacks the {@link android.Manifest.permission#DELETE_CACHE_FILES} permission, if the named package cannot be found, or if the named package is a "system package".

param
packageName The name of the package to delete
param
observer An observer callback to get notified when the cache file deletion is complete. {@link android.content.pm.IPackageDataObserver#onRemoveCompleted(String, boolean)} will be called when that happens. observer may be null to indicate that no callback is desired.
hide

public abstract voiddeletePackage(java.lang.String packageName, IPackageDeleteObserver observer, int flags)
Attempts to delete a package. Since this may take a little while, the result will be posted back to the given observer. A deletion will fail if the calling context lacks the {@link android.Manifest.permission#DELETE_PACKAGES} permission, if the named package cannot be found, or if the named package is a "system package". (TODO: include pointer to documentation on "system packages")

param
packageName The name of the package to delete
param
observer An observer callback to get notified when the package deletion is complete. {@link android.content.pm.IPackageDeleteObserver#packageDeleted(boolean)} will be called when that happens. observer may be null to indicate that no callback is desired.
param
flags - possible values: {@link #DELETE_KEEP_DATA}, {@link #DELETE_ALL_USERS}.
hide

public static intdeleteStatusToPublicStatus(int status)
{@hide}

        switch (status) {
            case DELETE_SUCCEEDED: return PackageInstaller.STATUS_SUCCESS;
            case DELETE_FAILED_INTERNAL_ERROR: return PackageInstaller.STATUS_FAILURE;
            case DELETE_FAILED_DEVICE_POLICY_MANAGER: return PackageInstaller.STATUS_FAILURE_BLOCKED;
            case DELETE_FAILED_USER_RESTRICTED: return PackageInstaller.STATUS_FAILURE_BLOCKED;
            case DELETE_FAILED_OWNER_BLOCKED: return PackageInstaller.STATUS_FAILURE_BLOCKED;
            case DELETE_FAILED_ABORTED: return PackageInstaller.STATUS_FAILURE_ABORTED;
            default: return PackageInstaller.STATUS_FAILURE;
        }
    
public static java.lang.StringdeleteStatusToString(int status, java.lang.String msg)
{@hide}

        final String str = deleteStatusToString(status);
        if (msg != null) {
            return str + ": " + msg;
        } else {
            return str;
        }
    
public static java.lang.StringdeleteStatusToString(int status)
{@hide}

        switch (status) {
            case DELETE_SUCCEEDED: return "DELETE_SUCCEEDED";
            case DELETE_FAILED_INTERNAL_ERROR: return "DELETE_FAILED_INTERNAL_ERROR";
            case DELETE_FAILED_DEVICE_POLICY_MANAGER: return "DELETE_FAILED_DEVICE_POLICY_MANAGER";
            case DELETE_FAILED_USER_RESTRICTED: return "DELETE_FAILED_USER_RESTRICTED";
            case DELETE_FAILED_OWNER_BLOCKED: return "DELETE_FAILED_OWNER_BLOCKED";
            case DELETE_FAILED_ABORTED: return "DELETE_FAILED_ABORTED";
            default: return Integer.toString(status);
        }
    
public abstract voidextendVerificationTimeout(int id, int verificationCodeAtTimeout, long millisecondsToDelay)
Allows a package listening to the {@link Intent#ACTION_PACKAGE_NEEDS_VERIFICATION package verification broadcast} to extend the default timeout for a response and declare what action to perform after the timeout occurs. The response must include the {@code verificationCodeAtTimeout} which is one of {@link PackageManager#VERIFICATION_ALLOW} or {@link PackageManager#VERIFICATION_REJECT}. This method may only be called once per package id. Additional calls will have no effect.

param
id pending package identifier as passed via the {@link PackageManager#EXTRA_VERIFICATION_ID} Intent extra.
param
verificationCodeAtTimeout either {@link PackageManager#VERIFICATION_ALLOW} or {@link PackageManager#VERIFICATION_REJECT}. If {@code verificationCodeAtTimeout} is neither {@link PackageManager#VERIFICATION_ALLOW} or {@link PackageManager#VERIFICATION_REJECT}, then {@code verificationCodeAtTimeout} will default to {@link PackageManager#VERIFICATION_REJECT}.
param
millisecondsToDelay the amount of time requested for the timeout. Must be positive and less than {@link PackageManager#MAXIMUM_VERIFICATION_TIMEOUT}. If {@code millisecondsToDelay} is out of bounds, {@code millisecondsToDelay} will be set to the closest in bounds value; namely, 0 or {@link PackageManager#MAXIMUM_VERIFICATION_TIMEOUT}.
throws
SecurityException if the caller does not have the PACKAGE_VERIFICATION_AGENT permission.

public abstract voidfreeStorage(long freeStorageSize, android.content.IntentSender pi)
Free storage by deleting LRU sorted list of cache files across all applications. If the currently available free storage on the device is greater than or equal to the requested free storage, no cache files are cleared. If the currently available storage on the device is less than the requested free storage, some or all of the cache files across all applications are deleted (based on last accessed time) to increase the free storage space on the device to the requested value. There is no guarantee that clearing all the cache files from all applications will clear up enough storage to achieve the desired value.

param
freeStorageSize The number of bytes of storage to be freed by the system. Say if freeStorageSize is XX, and the current free storage is YY, if XX is less than YY, just return. if not free XX-YY number of bytes if possible.
param
pi IntentSender call back used to notify when the operation is completed.May be null to indicate that no call back is desired.
hide

public abstract voidfreeStorageAndNotify(long freeStorageSize, IPackageDataObserver observer)
Free storage by deleting LRU sorted list of cache files across all applications. If the currently available free storage on the device is greater than or equal to the requested free storage, no cache files are cleared. If the currently available storage on the device is less than the requested free storage, some or all of the cache files across all applications are deleted (based on last accessed time) to increase the free storage space on the device to the requested value. There is no guarantee that clearing all the cache files from all applications will clear up enough storage to achieve the desired value.

param
freeStorageSize The number of bytes of storage to be freed by the system. Say if freeStorageSize is XX, and the current free storage is YY, if XX is less than YY, just return. if not free XX-YY number of bytes if possible.
param
observer call back used to notify when the operation is completed
hide

public abstract android.graphics.drawable.DrawablegetActivityBanner(android.content.ComponentName activityName)
Retrieve the banner associated with an activity. Given the full name of an activity, retrieves the information about it and calls {@link ComponentInfo#loadIcon ComponentInfo.loadIcon()} to return its banner. If the activity cannot be found, NameNotFoundException is thrown.

param
activityName Name of the activity whose banner is to be retrieved.
return
Returns the image of the banner, or null if the activity has no banner specified.
throws
NameNotFoundException Thrown if the resources for the given activity could not be loaded.
see
#getActivityBanner(Intent)

public abstract android.graphics.drawable.DrawablegetActivityBanner(android.content.Intent intent)
Retrieve the banner associated with an Intent. If intent.getClassName() is set, this simply returns the result of getActivityBanner(intent.getClassName()). Otherwise it resolves the intent's component and returns the banner associated with the resolved component. If intent.getClassName() cannot be found or the Intent cannot be resolved to a component, NameNotFoundException is thrown.

param
intent The intent for which you would like to retrieve a banner.
return
Returns the image of the banner, or null if the activity has no banner specified.
throws
NameNotFoundException Thrown if the resources for application matching the given intent could not be loaded.
see
#getActivityBanner(ComponentName)

public abstract android.graphics.drawable.DrawablegetActivityIcon(android.content.ComponentName activityName)
Retrieve the icon associated with an activity. Given the full name of an activity, retrieves the information about it and calls {@link ComponentInfo#loadIcon ComponentInfo.loadIcon()} to return its icon. If the activity cannot be found, NameNotFoundException is thrown.

param
activityName Name of the activity whose icon is to be retrieved.
return
Returns the image of the icon, or the default activity icon if it could not be found. Does not return null.
throws
NameNotFoundException Thrown if the resources for the given activity could not be loaded.
see
#getActivityIcon(Intent)

public abstract android.graphics.drawable.DrawablegetActivityIcon(android.content.Intent intent)
Retrieve the icon associated with an Intent. If intent.getClassName() is set, this simply returns the result of getActivityIcon(intent.getClassName()). Otherwise it resolves the intent's component and returns the icon associated with the resolved component. If intent.getClassName() cannot be found or the Intent cannot be resolved to a component, NameNotFoundException is thrown.

param
intent The intent for which you would like to retrieve an icon.
return
Returns the image of the icon, or the default activity icon if it could not be found. Does not return null.
throws
NameNotFoundException Thrown if the resources for application matching the given intent could not be loaded.
see
#getActivityIcon(ComponentName)

public abstract ActivityInfogetActivityInfo(android.content.ComponentName component, int flags)
Retrieve all of the information we know about a particular activity class.

Throws {@link NameNotFoundException} if an activity with the given class name cannot be found on the system.

param
component The full component name (i.e. com.google.apps.contacts/com.google.apps.contacts.ContactsList) of an Activity class.
param
flags Additional option flags. Use any combination of {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, to modify the data (in ApplicationInfo) returned.
return
{@link ActivityInfo} containing information about the activity.
see
#GET_INTENT_FILTERS
see
#GET_META_DATA
see
#GET_SHARED_LIBRARY_FILES

public abstract android.graphics.drawable.DrawablegetActivityLogo(android.content.ComponentName activityName)
Retrieve the logo associated with an activity. Given the full name of an activity, retrieves the information about it and calls {@link ComponentInfo#loadLogo ComponentInfo.loadLogo()} to return its logo. If the activity cannot be found, NameNotFoundException is thrown.

param
activityName Name of the activity whose logo is to be retrieved.
return
Returns the image of the logo or null if the activity has no logo specified.
throws
NameNotFoundException Thrown if the resources for the given activity could not be loaded.
see
#getActivityLogo(Intent)

public abstract android.graphics.drawable.DrawablegetActivityLogo(android.content.Intent intent)
Retrieve the logo associated with an Intent. If intent.getClassName() is set, this simply returns the result of getActivityLogo(intent.getClassName()). Otherwise it resolves the intent's component and returns the logo associated with the resolved component. If intent.getClassName() cannot be found or the Intent cannot be resolved to a component, NameNotFoundException is thrown.

param
intent The intent for which you would like to retrieve a logo.
return
Returns the image of the logo, or null if the activity has no logo specified.
throws
NameNotFoundException Thrown if the resources for application matching the given intent could not be loaded.
see
#getActivityLogo(ComponentName)

public abstract java.util.ListgetAllPermissionGroups(int flags)
Retrieve all of the known permission groups in the system.

param
flags Additional option flags. Use {@link #GET_META_DATA} to retrieve any meta-data associated with the permission group.
return
Returns a list of {@link PermissionGroupInfo} containing information about all of the known permission groups.

public abstract android.graphics.drawable.DrawablegetApplicationBanner(ApplicationInfo info)
Retrieve the banner associated with an application.

param
info Information about application being queried.
return
Returns the image of the banner or null if the application has no banner specified.
see
#getApplicationBanner(String)

public abstract android.graphics.drawable.DrawablegetApplicationBanner(java.lang.String packageName)
Retrieve the banner associated with an application. Given the name of the application's package, retrieves the information about it and calls getApplicationIcon() to return its banner. If the application cannot be found, NameNotFoundException is thrown.

param
packageName Name of the package whose application banner is to be retrieved.
return
Returns the image of the banner or null if the application has no banner specified.
throws
NameNotFoundException Thrown if the resources for the given application could not be loaded.
see
#getApplicationBanner(ApplicationInfo)

public abstract intgetApplicationEnabledSetting(java.lang.String packageName)
Return the enabled setting for an application. This returns the last value set by {@link #setApplicationEnabledSetting(String, int, int)}; in most cases this value will be {@link #COMPONENT_ENABLED_STATE_DEFAULT} since the value originally specified in the manifest has not been modified.

param
packageName The package name of the application to retrieve.
return
Returns the current enabled state for the application. May be one of {@link #COMPONENT_ENABLED_STATE_ENABLED}, {@link #COMPONENT_ENABLED_STATE_DISABLED}, or {@link #COMPONENT_ENABLED_STATE_DEFAULT}. The last one means the application's enabled state is based on the original information in the manifest as found in {@link ComponentInfo}.
throws
IllegalArgumentException if the named package does not exist.

public abstract booleangetApplicationHiddenSettingAsUser(java.lang.String packageName, android.os.UserHandle userHandle)
Returns the hidden state of a package.

see
#setApplicationHiddenSettingAsUser(String, boolean, UserHandle)
hide

public abstract android.graphics.drawable.DrawablegetApplicationIcon(ApplicationInfo info)
Retrieve the icon associated with an application. If it has not defined an icon, the default app icon is returned. Does not return null.

param
info Information about application being queried.
return
Returns the image of the icon, or the default application icon if it could not be found.
see
#getApplicationIcon(String)

public abstract android.graphics.drawable.DrawablegetApplicationIcon(java.lang.String packageName)
Retrieve the icon associated with an application. Given the name of the application's package, retrieves the information about it and calls getApplicationIcon() to return its icon. If the application cannot be found, NameNotFoundException is thrown.

param
packageName Name of the package whose application icon is to be retrieved.
return
Returns the image of the icon, or the default application icon if it could not be found. Does not return null.
throws
NameNotFoundException Thrown if the resources for the given application could not be loaded.
see
#getApplicationIcon(ApplicationInfo)

public abstract ApplicationInfogetApplicationInfo(java.lang.String packageName, int flags)
Retrieve all of the information we know about a particular package/application.

Throws {@link NameNotFoundException} if an application with the given package name cannot be found on the system.

param
packageName The full name (i.e. com.google.apps.contacts) of an application.
param
flags Additional option flags. Use any combination of {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, {@link #GET_UNINSTALLED_PACKAGES} to modify the data returned.
return
{@link ApplicationInfo} Returns ApplicationInfo object containing information about the package. If flag GET_UNINSTALLED_PACKAGES is set and if the package is not found in the list of installed applications, the application information is retrieved from the list of uninstalled applications(which includes installed applications as well as applications with data directory ie applications which had been deleted with {@code DONT_DELETE_DATA} flag set).
see
#GET_META_DATA
see
#GET_SHARED_LIBRARY_FILES
see
#GET_UNINSTALLED_PACKAGES

public abstract java.lang.CharSequencegetApplicationLabel(ApplicationInfo info)
Return the label to use for this application.

return
Returns the label associated with this application, or null if it could not be found for any reason.
param
info The application to get the label of.

public abstract android.graphics.drawable.DrawablegetApplicationLogo(ApplicationInfo info)
Retrieve the logo associated with an application. If it has not specified a logo, this method returns null.

param
info Information about application being queried.
return
Returns the image of the logo, or null if no logo is specified by the application.
see
#getApplicationLogo(String)

public abstract android.graphics.drawable.DrawablegetApplicationLogo(java.lang.String packageName)
Retrieve the logo associated with an application. Given the name of the application's package, retrieves the information about it and calls getApplicationLogo() to return its logo. If the application cannot be found, NameNotFoundException is thrown.

param
packageName Name of the package whose application logo is to be retrieved.
return
Returns the image of the logo, or null if no application logo has been specified.
throws
NameNotFoundException Thrown if the resources for the given application could not be loaded.
see
#getApplicationLogo(ApplicationInfo)

public abstract intgetComponentEnabledSetting(android.content.ComponentName componentName)
Return the enabled setting for a package component (activity, receiver, service, provider). This returns the last value set by {@link #setComponentEnabledSetting(ComponentName, int, int)}; in most cases this value will be {@link #COMPONENT_ENABLED_STATE_DEFAULT} since the value originally specified in the manifest has not been modified.

param
componentName The component to retrieve.
return
Returns the current enabled state for the component. May be one of {@link #COMPONENT_ENABLED_STATE_ENABLED}, {@link #COMPONENT_ENABLED_STATE_DISABLED}, or {@link #COMPONENT_ENABLED_STATE_DEFAULT}. The last one means the component's enabled state is based on the original information in the manifest as found in {@link ComponentInfo}.

public static java.lang.StringgetDataDirForUser(int userId, java.lang.String packageName)
Returns the data directory for a particular user and package, given the uid of the package.

param
uid uid of the package, including the userId and appId
param
packageName name of the package
return
the user-specific data directory for the package
hide

        // TODO: This should be shared with Installer's knowledge of user directory
        return Environment.getDataDirectory().toString() + "/user/" + userId
                + "/" + packageName;
    
public abstract android.graphics.drawable.DrawablegetDefaultActivityIcon()
Return the generic icon for an activity that is used when no specific icon is defined.

return
Drawable Image of the icon.

public abstract android.graphics.drawable.DrawablegetDrawable(java.lang.String packageName, int resid, ApplicationInfo appInfo)
Retrieve an image from a package. This is a low-level API used by the various package manager info structures (such as {@link ComponentInfo} to implement retrieval of their associated icon.

param
packageName The name of the package that this icon is coming from. Cannot be null.
param
resid The resource identifier of the desired image. Cannot be 0.
param
appInfo Overall information about packageName. This may be null, in which case the application information will be retrieved for you if needed; if you already have this information around, it can be much more efficient to supply it here.
return
Returns a Drawable holding the requested image. Returns null if an image could not be found for any reason.

public abstract android.content.ComponentNamegetHomeActivities(java.util.List outActivities)
Ask for the set of available 'home' activities and the current explicit default, if any.

hide

public abstract java.util.ListgetInstalledApplications(int flags)
Return a List of all application packages that are installed on the device. If flag GET_UNINSTALLED_PACKAGES has been set, a list of all applications including those deleted with {@code DONT_DELETE_DATA} (partially installed apps with data directory) will be returned.

param
flags Additional option flags. Use any combination of {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, {@link #GET_UNINSTALLED_PACKAGES} to modify the data returned.
return
Returns a List of ApplicationInfo objects, one for each application that is installed on the device. In the unlikely case of there being no installed applications, an empty list is returned. If flag GET_UNINSTALLED_PACKAGES is set, a list of all applications including those deleted with {@code DONT_DELETE_DATA} (partially installed apps with data directory) will be returned.
see
#GET_META_DATA
see
#GET_SHARED_LIBRARY_FILES
see
#GET_UNINSTALLED_PACKAGES

public abstract java.util.ListgetInstalledPackages(int flags)
Return a List of all packages that are installed on the device.

param
flags Additional option flags. Use any combination of {@link #GET_ACTIVITIES}, {@link #GET_GIDS}, {@link #GET_CONFIGURATIONS}, {@link #GET_INSTRUMENTATION}, {@link #GET_PERMISSIONS}, {@link #GET_PROVIDERS}, {@link #GET_RECEIVERS}, {@link #GET_SERVICES}, {@link #GET_SIGNATURES}, {@link #GET_UNINSTALLED_PACKAGES} to modify the data returned.
return
A List of PackageInfo objects, one for each package that is installed on the device. In the unlikely case of there being no installed packages, an empty list is returned. If flag GET_UNINSTALLED_PACKAGES is set, a list of all applications including those deleted with {@code DONT_DELETE_DATA} (partially installed apps with data directory) will be returned.
see
#GET_ACTIVITIES
see
#GET_GIDS
see
#GET_CONFIGURATIONS
see
#GET_INSTRUMENTATION
see
#GET_PERMISSIONS
see
#GET_PROVIDERS
see
#GET_RECEIVERS
see
#GET_SERVICES
see
#GET_SIGNATURES
see
#GET_UNINSTALLED_PACKAGES

public abstract java.util.ListgetInstalledPackages(int flags, int userId)
Return a List of all packages that are installed on the device, for a specific user. Requesting a list of installed packages for another user will require the permission INTERACT_ACROSS_USERS_FULL.

param
flags Additional option flags. Use any combination of {@link #GET_ACTIVITIES}, {@link #GET_GIDS}, {@link #GET_CONFIGURATIONS}, {@link #GET_INSTRUMENTATION}, {@link #GET_PERMISSIONS}, {@link #GET_PROVIDERS}, {@link #GET_RECEIVERS}, {@link #GET_SERVICES}, {@link #GET_SIGNATURES}, {@link #GET_UNINSTALLED_PACKAGES} to modify the data returned.
param
userId The user for whom the installed packages are to be listed
return
A List of PackageInfo objects, one for each package that is installed on the device. In the unlikely case of there being no installed packages, an empty list is returned. If flag GET_UNINSTALLED_PACKAGES is set, a list of all applications including those deleted with {@code DONT_DELETE_DATA} (partially installed apps with data directory) will be returned.
see
#GET_ACTIVITIES
see
#GET_GIDS
see
#GET_CONFIGURATIONS
see
#GET_INSTRUMENTATION
see
#GET_PERMISSIONS
see
#GET_PROVIDERS
see
#GET_RECEIVERS
see
#GET_SERVICES
see
#GET_SIGNATURES
see
#GET_UNINSTALLED_PACKAGES
hide

public abstract java.lang.StringgetInstallerPackageName(java.lang.String packageName)
Retrieve the package name of the application that installed a package. This identifies which market the package came from.

param
packageName The name of the package to query

public abstract InstrumentationInfogetInstrumentationInfo(android.content.ComponentName className, int flags)
Retrieve all of the information we know about a particular instrumentation class.

Throws {@link NameNotFoundException} if instrumentation with the given class name cannot be found on the system.

param
className The full name (i.e. com.google.apps.contacts.InstrumentList) of an Instrumentation class.
param
flags Additional option flags. Currently should always be 0.
return
InstrumentationInfo containing information about the instrumentation.

public abstract KeySetgetKeySetByAlias(java.lang.String packageName, java.lang.String alias)
Return the {@link KeySet} associated with the String alias for this application.

param
alias The alias for a given {@link KeySet} as defined in the application's AndroidManifest.xml.
hide

public abstract android.content.IntentgetLaunchIntentForPackage(java.lang.String packageName)
Returns a "good" intent to launch a front-door activity in a package. This is used, for example, to implement an "open" button when browsing through packages. The current implementation looks first for a main activity in the category {@link Intent#CATEGORY_INFO}, and next for a main activity in the category {@link Intent#CATEGORY_LAUNCHER}. Returns null if neither are found.

param
packageName The name of the package to inspect.
return
A fully-qualified {@link Intent} that can be used to launch the main activity in the package. Returns null if the package does not contain such an activity, or if packageName is not recognized.

public abstract android.content.IntentgetLeanbackLaunchIntentForPackage(java.lang.String packageName)
Return a "good" intent to launch a front-door Leanback activity in a package, for use for example to implement an "open" button when browsing through packages. The current implementation will look for a main activity in the category {@link Intent#CATEGORY_LEANBACK_LAUNCHER}, or return null if no main leanback activities are found.

Throws {@link NameNotFoundException} if a package with the given name cannot be found on the system.

param
packageName The name of the package to inspect.
return
Returns either a fully-qualified Intent that can be used to launch the main Leanback activity in the package, or null if the package does not contain such an activity.

public abstract java.lang.StringgetNameForUid(int uid)
Retrieve the official name associated with a user id. This name is guaranteed to never change, though it is possibly for the underlying user id to be changed. That is, if you are storing information about user ids in persistent storage, you should use the string returned by this function instead of the raw user-id.

param
uid The user id for which you would like to retrieve a name.
return
Returns a unique name for the given user id, or null if the user id is not currently assigned.

public PackageInfogetPackageArchiveInfo(java.lang.String archiveFilePath, int flags)
Retrieve overall information about an application package defined in a package archive file

param
archiveFilePath The path to the archive file
param
flags Additional option flags. Use any combination of {@link #GET_ACTIVITIES}, {@link #GET_GIDS}, {@link #GET_CONFIGURATIONS}, {@link #GET_INSTRUMENTATION}, {@link #GET_PERMISSIONS}, {@link #GET_PROVIDERS}, {@link #GET_RECEIVERS}, {@link #GET_SERVICES}, {@link #GET_SIGNATURES}, to modify the data returned.
return
Returns the information about the package. Returns null if the package could not be successfully parsed.
see
#GET_ACTIVITIES
see
#GET_GIDS
see
#GET_CONFIGURATIONS
see
#GET_INSTRUMENTATION
see
#GET_PERMISSIONS
see
#GET_PROVIDERS
see
#GET_RECEIVERS
see
#GET_SERVICES
see
#GET_SIGNATURES

        final PackageParser parser = new PackageParser();
        final File apkFile = new File(archiveFilePath);
        try {
            PackageParser.Package pkg = parser.parseMonolithicPackage(apkFile, 0);
            if ((flags & GET_SIGNATURES) != 0) {
                parser.collectCertificates(pkg, 0);
                parser.collectManifestDigest(pkg);
            }
            PackageUserState state = new PackageUserState();
            return PackageParser.generatePackageInfo(pkg, null, flags, 0, 0, null, state);
        } catch (PackageParserException e) {
            return null;
        }
    
public abstract int[]getPackageGids(java.lang.String packageName)
Return an array of all of the secondary group-ids that have been assigned to a package.

Throws {@link NameNotFoundException} if a package with the given name cannot be found on the system.

param
packageName The full name (i.e. com.google.apps.contacts) of the desired package.
return
Returns an int array of the assigned gids, or null if there are none.

public abstract PackageInfogetPackageInfo(java.lang.String packageName, int flags)
Retrieve overall information about an application package that is installed on the system.

Throws {@link NameNotFoundException} if a package with the given name can not be found on the system.

param
packageName The full name (i.e. com.google.apps.contacts) of the desired package.
param
flags Additional option flags. Use any combination of {@link #GET_ACTIVITIES}, {@link #GET_GIDS}, {@link #GET_CONFIGURATIONS}, {@link #GET_INSTRUMENTATION}, {@link #GET_PERMISSIONS}, {@link #GET_PROVIDERS}, {@link #GET_RECEIVERS}, {@link #GET_SERVICES}, {@link #GET_SIGNATURES}, {@link #GET_UNINSTALLED_PACKAGES} to modify the data returned.
return
Returns a PackageInfo object containing information about the package. If flag GET_UNINSTALLED_PACKAGES is set and if the package is not found in the list of installed applications, the package information is retrieved from the list of uninstalled applications (which includes installed applications as well as applications with data directory i.e. applications which had been deleted with {@code DONT_DELETE_DATA} flag set).
see
#GET_ACTIVITIES
see
#GET_GIDS
see
#GET_CONFIGURATIONS
see
#GET_INSTRUMENTATION
see
#GET_PERMISSIONS
see
#GET_PROVIDERS
see
#GET_RECEIVERS
see
#GET_SERVICES
see
#GET_SIGNATURES
see
#GET_UNINSTALLED_PACKAGES

public abstract PackageInstallergetPackageInstaller()
Return interface that offers the ability to install, upgrade, and remove applications on the device.

public abstract voidgetPackageSizeInfo(java.lang.String packageName, int userHandle, IPackageStatsObserver observer)
Retrieve the size information for a package. Since this may take a little while, the result will be posted back to the given observer. The calling context should have the {@link android.Manifest.permission#GET_PACKAGE_SIZE} permission.

param
packageName The name of the package whose size information is to be retrieved
param
userHandle The user whose size information should be retrieved.
param
observer An observer callback to get notified when the operation is complete. {@link android.content.pm.IPackageStatsObserver#onGetStatsCompleted(PackageStats, boolean)} The observer's callback is invoked with a PackageStats object(containing the code, data and cache sizes of the package) and a boolean value representing the status of the operation. observer may be null to indicate that no callback is desired.
hide

public voidgetPackageSizeInfo(java.lang.String packageName, IPackageStatsObserver observer)
Like {@link #getPackageSizeInfo(String, int, IPackageStatsObserver)}, but returns the size for the calling user.

hide

        getPackageSizeInfo(packageName, UserHandle.myUserId(), observer);
    
public abstract intgetPackageUid(java.lang.String packageName, int userHandle)

hide
Return the uid associated with the given package name for the given user.

Throws {@link NameNotFoundException} if a package with the given name can not be found on the system.

param
packageName The full name (i.e. com.google.apps.contacts) of the desired package.
param
userHandle The user handle identifier to look up the package under.
return
Returns an integer uid who owns the given package name.

public abstract java.lang.String[]getPackagesForUid(int uid)
Retrieve the names of all packages that are associated with a particular user id. In most cases, this will be a single package name, the package that has been assigned that user id. Where there are multiple packages sharing the same user id through the "sharedUserId" mechanism, all packages with that id will be returned.

param
uid The user id for which you would like to retrieve the associated packages.
return
Returns an array of one or more packages assigned to the user id, or null if there are no known packages with the given id.

public abstract java.util.ListgetPackagesHoldingPermissions(java.lang.String[] permissions, int flags)
Return a List of all installed packages that are currently holding any of the given permissions.

param
flags Additional option flags. Use any combination of {@link #GET_ACTIVITIES}, {@link #GET_GIDS}, {@link #GET_CONFIGURATIONS}, {@link #GET_INSTRUMENTATION}, {@link #GET_PERMISSIONS}, {@link #GET_PROVIDERS}, {@link #GET_RECEIVERS}, {@link #GET_SERVICES}, {@link #GET_SIGNATURES}, {@link #GET_UNINSTALLED_PACKAGES} to modify the data returned.
return
Returns a List of PackageInfo objects, one for each installed application that is holding any of the permissions that were provided.
see
#GET_ACTIVITIES
see
#GET_GIDS
see
#GET_CONFIGURATIONS
see
#GET_INSTRUMENTATION
see
#GET_PERMISSIONS
see
#GET_PROVIDERS
see
#GET_RECEIVERS
see
#GET_SERVICES
see
#GET_SIGNATURES
see
#GET_UNINSTALLED_PACKAGES

public abstract PermissionGroupInfogetPermissionGroupInfo(java.lang.String name, int flags)
Retrieve all of the information we know about a particular group of permissions.

Throws {@link NameNotFoundException} if a permission group with the given name cannot be found on the system.

param
name The fully qualified name (i.e. com.google.permission_group.APPS) of the permission you are interested in.
param
flags Additional option flags. Use {@link #GET_META_DATA} to retrieve any meta-data associated with the permission group.
return
Returns a {@link PermissionGroupInfo} containing information about the permission.

public abstract PermissionInfogetPermissionInfo(java.lang.String name, int flags)
Retrieve all of the information we know about a particular permission.

Throws {@link NameNotFoundException} if a permission with the given name cannot be found on the system.

param
name The fully qualified name (i.e. com.google.permission.LOGIN) of the permission you are interested in.
param
flags Additional option flags. Use {@link #GET_META_DATA} to retrieve any meta-data associated with the permission.
return
Returns a {@link PermissionInfo} containing information about the permission.

public abstract intgetPreferredActivities(java.util.List outFilters, java.util.List outActivities, java.lang.String packageName)
Retrieve all preferred activities, previously added with {@link #addPreferredActivity}, that are currently registered with the system.

param
outFilters A list in which to place the filters of all of the preferred activities, or null for none.
param
outActivities A list in which to place the component names of all of the preferred activities, or null for none.
param
packageName An option package in which you would like to limit the list. If null, all activities will be returned; if non-null, only those activities in the given package are returned.
return
Returns the total number of registered preferred activities (the number of distinct IntentFilter records, not the number of unique activity components) that were found.

public abstract java.util.ListgetPreferredPackages(int flags)
Retrieve the list of all currently configured preferred packages. The first package on the list is the most preferred, the last is the least preferred.

param
flags Additional option flags. Use any combination of {@link #GET_ACTIVITIES}, {@link #GET_GIDS}, {@link #GET_CONFIGURATIONS}, {@link #GET_INSTRUMENTATION}, {@link #GET_PERMISSIONS}, {@link #GET_PROVIDERS}, {@link #GET_RECEIVERS}, {@link #GET_SERVICES}, {@link #GET_SIGNATURES}, to modify the data returned.
return
Returns a list of PackageInfo objects describing each preferred application, in order of preference.
see
#GET_ACTIVITIES
see
#GET_GIDS
see
#GET_CONFIGURATIONS
see
#GET_INSTRUMENTATION
see
#GET_PERMISSIONS
see
#GET_PROVIDERS
see
#GET_RECEIVERS
see
#GET_SERVICES
see
#GET_SIGNATURES

public abstract ProviderInfogetProviderInfo(android.content.ComponentName component, int flags)
Retrieve all of the information we know about a particular content provider class.

Throws {@link NameNotFoundException} if a provider with the given class name cannot be found on the system.

param
component The full component name (i.e. com.google.providers.media/com.google.providers.media.MediaProvider) of a ContentProvider class.
param
flags Additional option flags. Use any combination of {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, to modify the data returned.
return
ProviderInfo containing information about the service.
see
#GET_META_DATA
see
#GET_SHARED_LIBRARY_FILES

public abstract ActivityInfogetReceiverInfo(android.content.ComponentName component, int flags)
Retrieve all of the information we know about a particular receiver class.

Throws {@link NameNotFoundException} if a receiver with the given class name cannot be found on the system.

param
component The full component name (i.e. com.google.apps.calendar/com.google.apps.calendar.CalendarAlarm) of a Receiver class.
param
flags Additional option flags. Use any combination of {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, to modify the data returned.
return
{@link ActivityInfo} containing information about the receiver.
see
#GET_INTENT_FILTERS
see
#GET_META_DATA
see
#GET_SHARED_LIBRARY_FILES

public abstract android.content.res.ResourcesgetResourcesForActivity(android.content.ComponentName activityName)
Retrieve the resources associated with an activity. Given the full name of an activity, retrieves the information about it and calls getResources() to return its application's resources. If the activity cannot be found, NameNotFoundException is thrown.

param
activityName Name of the activity whose resources are to be retrieved.
return
Returns the application's Resources.
throws
NameNotFoundException Thrown if the resources for the given application could not be loaded.
see
#getResourcesForApplication(ApplicationInfo)

public abstract android.content.res.ResourcesgetResourcesForApplication(ApplicationInfo app)
Retrieve the resources for an application. Throws NameNotFoundException if the package is no longer installed.

param
app Information about the desired application.
return
Returns the application's Resources.
throws
NameNotFoundException Thrown if the resources for the given application could not be loaded (most likely because it was uninstalled).

public abstract android.content.res.ResourcesgetResourcesForApplication(java.lang.String appPackageName)
Retrieve the resources associated with an application. Given the full package name of an application, retrieves the information about it and calls getResources() to return its application's resources. If the appPackageName cannot be found, NameNotFoundException is thrown.

param
appPackageName Package name of the application whose resources are to be retrieved.
return
Returns the application's Resources.
throws
NameNotFoundException Thrown if the resources for the given application could not be loaded.
see
#getResourcesForApplication(ApplicationInfo)

public abstract android.content.res.ResourcesgetResourcesForApplicationAsUser(java.lang.String appPackageName, int userId)

hide

public abstract ServiceInfogetServiceInfo(android.content.ComponentName component, int flags)
Retrieve all of the information we know about a particular service class.

Throws {@link NameNotFoundException} if a service with the given class name cannot be found on the system.

param
component The full component name (i.e. com.google.apps.media/com.google.apps.media.BackgroundPlayback) of a Service class.
param
flags Additional option flags. Use any combination of {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, to modify the data returned.
return
ServiceInfo containing information about the service.
see
#GET_META_DATA
see
#GET_SHARED_LIBRARY_FILES

public abstract KeySetgetSigningKeySet(java.lang.String packageName)
Return the signing {@link KeySet} for this application.

hide

public abstract FeatureInfo[]getSystemAvailableFeatures()
Get a list of features that are available on the system.

return
An array of FeatureInfo classes describing the features that are available on the system, or null if there are none(!!).

public abstract java.lang.String[]getSystemSharedLibraryNames()
Get a list of shared libraries that are available on the system.

return
An array of shared library names that are available on the system, or null if none are installed.

public abstract java.lang.CharSequencegetText(java.lang.String packageName, int resid, ApplicationInfo appInfo)
Retrieve text from a package. This is a low-level API used by the various package manager info structures (such as {@link ComponentInfo} to implement retrieval of their associated labels and other text.

param
packageName The name of the package that this text is coming from. Cannot be null.
param
resid The resource identifier of the desired text. Cannot be 0.
param
appInfo Overall information about packageName. This may be null, in which case the application information will be retrieved for you if needed; if you already have this information around, it can be much more efficient to supply it here.
return
Returns a CharSequence holding the requested text. Returns null if the text could not be found for any reason.

public abstract intgetUidForSharedUser(java.lang.String sharedUserName)
Return the user id associated with a shared user name. Multiple applications can specify a shared user name in their manifest and thus end up using a common uid. This might be used for new applications that use an existing shared user name and need to know the uid of the shared user.

param
sharedUserName The shared user name whose uid is to be retrieved.
return
Returns the uid associated with the shared user, or NameNotFoundException if the shared user name is not being used by any installed packages
hide

public abstract android.graphics.drawable.DrawablegetUserBadgeForDensity(android.os.UserHandle user, int density)
If the target user is a managed profile of the calling user or the caller is itself a managed profile, then this returns a drawable to use as a small icon to include in a view to distinguish it from the original icon.

param
user The target user.
param
density The optional desired density for the badge as per {@link android.util.DisplayMetrics#densityDpi}. If not provided the density of the current display is used.
return
the drawable or null if no drawable is required.
hide

public abstract android.graphics.drawable.DrawablegetUserBadgedDrawableForDensity(android.graphics.drawable.Drawable drawable, android.os.UserHandle user, android.graphics.Rect badgeLocation, int badgeDensity)
If the target user is a managed profile of the calling user or the caller is itself a managed profile, then this returns a badged copy of the given drawable allowing the user to distinguish it from the original drawable. The caller can specify the location in the bounds of the drawable to be badged where the badge should be applied as well as the density of the badge to be used.

If the original drawable is a BitmapDrawable and the backing bitmap is mutable as per {@link android.graphics.Bitmap#isMutable()}, the bading is performed in place and the original drawable is returned.

param
drawable The drawable to badge.
param
user The target user.
param
badgeLocation Where in the bounds of the badged drawable to place the badge. If not provided, the badge is applied on top of the entire drawable being badged.
param
badgeDensity The optional desired density for the badge as per {@link android.util.DisplayMetrics#densityDpi}. If not provided, the density of the display is used.
return
A drawable that combines the original drawable and a badge as determined by the system.

public abstract android.graphics.drawable.DrawablegetUserBadgedIcon(android.graphics.drawable.Drawable icon, android.os.UserHandle user)
If the target user is a managed profile of the calling user or the caller is itself a managed profile, then this returns a badged copy of the given icon to be able to distinguish it from the original icon. For badging an arbitrary drawable use {@link #getUserBadgedDrawableForDensity( android.graphics.drawable.Drawable, UserHandle, android.graphics.Rect, int)}.

If the original drawable is a BitmapDrawable and the backing bitmap is mutable as per {@link android.graphics.Bitmap#isMutable()}, the badging is performed in place and the original drawable is returned.

param
icon The icon to badge.
param
user The target user.
return
A drawable that combines the original icon and a badge as determined by the system.

public abstract java.lang.CharSequencegetUserBadgedLabel(java.lang.CharSequence label, android.os.UserHandle user)
If the target user is a managed profile of the calling user or the caller is itself a managed profile, then this returns a copy of the label with badging for accessibility services like talkback. E.g. passing in "Email" and it might return "Work Email" for Email in the work profile.

param
label The label to change.
param
user The target user.
return
A label that combines the original label and a badge as determined by the system.

public abstract VerifierDeviceIdentitygetVerifierDeviceIdentity()
Returns the device identity that verifiers can use to associate their scheme to a particular device. This should not be used by anything other than a package verifier.

return
identity that uniquely identifies current device
hide

public abstract android.content.res.XmlResourceParsergetXml(java.lang.String packageName, int resid, ApplicationInfo appInfo)
Retrieve an XML file from a package. This is a low-level API used to retrieve XML meta data.

param
packageName The name of the package that this xml is coming from. Cannot be null.
param
resid The resource identifier of the desired xml. Cannot be 0.
param
appInfo Overall information about packageName. This may be null, in which case the application information will be retrieved for you if needed; if you already have this information around, it can be much more efficient to supply it here.
return
Returns an XmlPullParser allowing you to parse out the XML data. Returns null if the xml resource could not be found for any reason.

public abstract voidgrantPermission(java.lang.String packageName, java.lang.String permissionName)
Grant a permission to an application which the application does not already have. The permission must have been requested by the application, but as an optional permission. If the application is not allowed to hold the permission, a SecurityException is thrown.

hide
param
packageName The name of the package that the permission will be granted to.
param
permissionName The name of the permission.

public abstract booleanhasSystemFeature(java.lang.String name)
Check whether the given feature name is one of the available features as returned by {@link #getSystemAvailableFeatures()}.

return
Returns true if the devices supports the feature, else false.

public abstract intinstallExistingPackage(java.lang.String packageName)
If there is already an application with the given package name installed on the system for other users, also install it for the calling user.

hide

public abstract voidinstallPackage(android.net.Uri packageURI, IPackageInstallObserver observer, int flags, java.lang.String installerPackageName)

hide
Install a package. Since this may take a little while, the result will be posted back to the given observer. An installation will fail if the calling context lacks the {@link android.Manifest.permission#INSTALL_PACKAGES} permission, if the package named in the package file's manifest is already installed, or if there's no space available on the device.
param
packageURI The location of the package file to install. This can be a 'file:' or a 'content:' URI.
param
observer An observer callback to get notified when the package installation is complete. {@link IPackageInstallObserver#packageInstalled(String, int)} will be called when that happens. This parameter must not be null.
param
flags - possible values: {@link #INSTALL_FORWARD_LOCK}, {@link #INSTALL_REPLACE_EXISTING}, {@link #INSTALL_ALLOW_TEST}.
param
installerPackageName Optional package name of the application that is performing the installation. This identifies which market the package came from.
deprecated
Use {@link #installPackage(Uri, PackageInstallObserver, int, String)} instead. This method will continue to be supported but the older observer interface will not get additional failure details.

public abstract voidinstallPackage(android.net.Uri packageURI, android.app.PackageInstallObserver observer, int flags, java.lang.String installerPackageName)

hide
Install a package. Since this may take a little while, the result will be posted back to the given observer. An installation will fail if the calling context lacks the {@link android.Manifest.permission#INSTALL_PACKAGES} permission, if the package named in the package file's manifest is already installed, or if there's no space available on the device.
param
packageURI The location of the package file to install. This can be a 'file:' or a 'content:' URI.
param
observer An observer callback to get notified when the package installation is complete. {@link PackageInstallObserver#packageInstalled(String, Bundle, int)} will be called when that happens. This parameter must not be null.
param
flags - possible values: {@link #INSTALL_FORWARD_LOCK}, {@link #INSTALL_REPLACE_EXISTING}, {@link #INSTALL_ALLOW_TEST}.
param
installerPackageName Optional package name of the application that is performing the installation. This identifies which market the package came from.

public abstract voidinstallPackageWithVerification(android.net.Uri packageURI, IPackageInstallObserver observer, int flags, java.lang.String installerPackageName, android.net.Uri verificationURI, ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams)
Similar to {@link #installPackage(Uri, IPackageInstallObserver, int, String)} but with an extra verification file provided.

param
packageURI The location of the package file to install. This can be a 'file:' or a 'content:' URI.
param
observer An observer callback to get notified when the package installation is complete. {@link IPackageInstallObserver#packageInstalled(String, int)} will be called when that happens. This parameter must not be null.
param
flags - possible values: {@link #INSTALL_FORWARD_LOCK}, {@link #INSTALL_REPLACE_EXISTING}, {@link #INSTALL_ALLOW_TEST}.
param
installerPackageName Optional package name of the application that is performing the installation. This identifies which market the package came from.
param
verificationURI The location of the supplementary verification file. This can be a 'file:' or a 'content:' URI. May be {@code null}.
param
manifestDigest an object that holds the digest of the package which can be used to verify ownership. May be {@code null}.
param
encryptionParams if the package to be installed is encrypted, these parameters describing the encryption and authentication used. May be {@code null}.
hide
deprecated
Use {@link #installPackageWithVerification(Uri, PackageInstallObserver, int, String, Uri, ManifestDigest, ContainerEncryptionParams)} instead. This method will continue to be supported but the older observer interface will not get additional failure details.

public abstract voidinstallPackageWithVerification(android.net.Uri packageURI, android.app.PackageInstallObserver observer, int flags, java.lang.String installerPackageName, android.net.Uri verificationURI, ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams)
Similar to {@link #installPackage(Uri, IPackageInstallObserver, int, String)} but with an extra verification file provided.

param
packageURI The location of the package file to install. This can be a 'file:' or a 'content:' URI.
param
observer An observer callback to get notified when the package installation is complete. {@link PackageInstallObserver#packageInstalled(String, Bundle, int)} will be called when that happens. This parameter must not be null.
param
flags - possible values: {@link #INSTALL_FORWARD_LOCK}, {@link #INSTALL_REPLACE_EXISTING}, {@link #INSTALL_ALLOW_TEST}.
param
installerPackageName Optional package name of the application that is performing the installation. This identifies which market the package came from.
param
verificationURI The location of the supplementary verification file. This can be a 'file:' or a 'content:' URI. May be {@code null}.
param
manifestDigest an object that holds the digest of the package which can be used to verify ownership. May be {@code null}.
param
encryptionParams if the package to be installed is encrypted, these parameters describing the encryption and authentication used. May be {@code null}.
hide

public abstract voidinstallPackageWithVerificationAndEncryption(android.net.Uri packageURI, IPackageInstallObserver observer, int flags, java.lang.String installerPackageName, VerificationParams verificationParams, ContainerEncryptionParams encryptionParams)
Similar to {@link #installPackage(Uri, IPackageInstallObserver, int, String)} but with an extra verification information provided.

param
packageURI The location of the package file to install. This can be a 'file:' or a 'content:' URI.
param
observer An observer callback to get notified when the package installation is complete. {@link IPackageInstallObserver#packageInstalled(String, int)} will be called when that happens. This parameter must not be null.
param
flags - possible values: {@link #INSTALL_FORWARD_LOCK}, {@link #INSTALL_REPLACE_EXISTING}, {@link #INSTALL_ALLOW_TEST}.
param
installerPackageName Optional package name of the application that is performing the installation. This identifies which market the package came from.
param
verificationParams an object that holds signal information to assist verification. May be {@code null}.
param
encryptionParams if the package to be installed is encrypted, these parameters describing the encryption and authentication used. May be {@code null}.
hide
deprecated
Use {@link #installPackageWithVerificationAndEncryption(Uri, PackageInstallObserver, int, String, VerificationParams, ContainerEncryptionParams)} instead. This method will continue to be supported but the older observer interface will not get additional failure details.

public abstract voidinstallPackageWithVerificationAndEncryption(android.net.Uri packageURI, android.app.PackageInstallObserver observer, int flags, java.lang.String installerPackageName, VerificationParams verificationParams, ContainerEncryptionParams encryptionParams)
Similar to {@link #installPackage(Uri, IPackageInstallObserver, int, String)} but with an extra verification information provided.

param
packageURI The location of the package file to install. This can be a 'file:' or a 'content:' URI.
param
observer An observer callback to get notified when the package installation is complete. {@link PackageInstallObserver#packageInstalled(String, Bundle, int)} will be called when that happens. This parameter must not be null.
param
flags - possible values: {@link #INSTALL_FORWARD_LOCK}, {@link #INSTALL_REPLACE_EXISTING}, {@link #INSTALL_ALLOW_TEST}.
param
installerPackageName Optional package name of the application that is performing the installation. This identifies which market the package came from.
param
verificationParams an object that holds signal information to assist verification. May be {@code null}.
param
encryptionParams if the package to be installed is encrypted, these parameters describing the encryption and authentication used. May be {@code null}.
hide

public static intinstallStatusToPublicStatus(int status)
{@hide}

        switch (status) {
            case INSTALL_SUCCEEDED: return PackageInstaller.STATUS_SUCCESS;
            case INSTALL_FAILED_ALREADY_EXISTS: return PackageInstaller.STATUS_FAILURE_CONFLICT;
            case INSTALL_FAILED_INVALID_APK: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_FAILED_INVALID_URI: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_FAILED_INSUFFICIENT_STORAGE: return PackageInstaller.STATUS_FAILURE_STORAGE;
            case INSTALL_FAILED_DUPLICATE_PACKAGE: return PackageInstaller.STATUS_FAILURE_CONFLICT;
            case INSTALL_FAILED_NO_SHARED_USER: return PackageInstaller.STATUS_FAILURE_CONFLICT;
            case INSTALL_FAILED_UPDATE_INCOMPATIBLE: return PackageInstaller.STATUS_FAILURE_CONFLICT;
            case INSTALL_FAILED_SHARED_USER_INCOMPATIBLE: return PackageInstaller.STATUS_FAILURE_CONFLICT;
            case INSTALL_FAILED_MISSING_SHARED_LIBRARY: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
            case INSTALL_FAILED_REPLACE_COULDNT_DELETE: return PackageInstaller.STATUS_FAILURE_CONFLICT;
            case INSTALL_FAILED_DEXOPT: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_FAILED_OLDER_SDK: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
            case INSTALL_FAILED_CONFLICTING_PROVIDER: return PackageInstaller.STATUS_FAILURE_CONFLICT;
            case INSTALL_FAILED_NEWER_SDK: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
            case INSTALL_FAILED_TEST_ONLY: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_FAILED_CPU_ABI_INCOMPATIBLE: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
            case INSTALL_FAILED_MISSING_FEATURE: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
            case INSTALL_FAILED_CONTAINER_ERROR: return PackageInstaller.STATUS_FAILURE_STORAGE;
            case INSTALL_FAILED_INVALID_INSTALL_LOCATION: return PackageInstaller.STATUS_FAILURE_STORAGE;
            case INSTALL_FAILED_MEDIA_UNAVAILABLE: return PackageInstaller.STATUS_FAILURE_STORAGE;
            case INSTALL_FAILED_VERIFICATION_TIMEOUT: return PackageInstaller.STATUS_FAILURE_ABORTED;
            case INSTALL_FAILED_VERIFICATION_FAILURE: return PackageInstaller.STATUS_FAILURE_ABORTED;
            case INSTALL_FAILED_PACKAGE_CHANGED: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_FAILED_UID_CHANGED: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_FAILED_VERSION_DOWNGRADE: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_PARSE_FAILED_NOT_APK: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_PARSE_FAILED_BAD_MANIFEST: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_PARSE_FAILED_NO_CERTIFICATES: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_PARSE_FAILED_MANIFEST_EMPTY: return PackageInstaller.STATUS_FAILURE_INVALID;
            case INSTALL_FAILED_INTERNAL_ERROR: return PackageInstaller.STATUS_FAILURE;
            case INSTALL_FAILED_USER_RESTRICTED: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
            case INSTALL_FAILED_DUPLICATE_PERMISSION: return PackageInstaller.STATUS_FAILURE_CONFLICT;
            case INSTALL_FAILED_NO_MATCHING_ABIS: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
            case INSTALL_FAILED_ABORTED: return PackageInstaller.STATUS_FAILURE_ABORTED;
            default: return PackageInstaller.STATUS_FAILURE;
        }
    
public static java.lang.StringinstallStatusToString(int status, java.lang.String msg)
{@hide}

        final String str = installStatusToString(status);
        if (msg != null) {
            return str + ": " + msg;
        } else {
            return str;
        }
    
public static java.lang.StringinstallStatusToString(int status)
{@hide}

        switch (status) {
            case INSTALL_SUCCEEDED: return "INSTALL_SUCCEEDED";
            case INSTALL_FAILED_ALREADY_EXISTS: return "INSTALL_FAILED_ALREADY_EXISTS";
            case INSTALL_FAILED_INVALID_APK: return "INSTALL_FAILED_INVALID_APK";
            case INSTALL_FAILED_INVALID_URI: return "INSTALL_FAILED_INVALID_URI";
            case INSTALL_FAILED_INSUFFICIENT_STORAGE: return "INSTALL_FAILED_INSUFFICIENT_STORAGE";
            case INSTALL_FAILED_DUPLICATE_PACKAGE: return "INSTALL_FAILED_DUPLICATE_PACKAGE";
            case INSTALL_FAILED_NO_SHARED_USER: return "INSTALL_FAILED_NO_SHARED_USER";
            case INSTALL_FAILED_UPDATE_INCOMPATIBLE: return "INSTALL_FAILED_UPDATE_INCOMPATIBLE";
            case INSTALL_FAILED_SHARED_USER_INCOMPATIBLE: return "INSTALL_FAILED_SHARED_USER_INCOMPATIBLE";
            case INSTALL_FAILED_MISSING_SHARED_LIBRARY: return "INSTALL_FAILED_MISSING_SHARED_LIBRARY";
            case INSTALL_FAILED_REPLACE_COULDNT_DELETE: return "INSTALL_FAILED_REPLACE_COULDNT_DELETE";
            case INSTALL_FAILED_DEXOPT: return "INSTALL_FAILED_DEXOPT";
            case INSTALL_FAILED_OLDER_SDK: return "INSTALL_FAILED_OLDER_SDK";
            case INSTALL_FAILED_CONFLICTING_PROVIDER: return "INSTALL_FAILED_CONFLICTING_PROVIDER";
            case INSTALL_FAILED_NEWER_SDK: return "INSTALL_FAILED_NEWER_SDK";
            case INSTALL_FAILED_TEST_ONLY: return "INSTALL_FAILED_TEST_ONLY";
            case INSTALL_FAILED_CPU_ABI_INCOMPATIBLE: return "INSTALL_FAILED_CPU_ABI_INCOMPATIBLE";
            case INSTALL_FAILED_MISSING_FEATURE: return "INSTALL_FAILED_MISSING_FEATURE";
            case INSTALL_FAILED_CONTAINER_ERROR: return "INSTALL_FAILED_CONTAINER_ERROR";
            case INSTALL_FAILED_INVALID_INSTALL_LOCATION: return "INSTALL_FAILED_INVALID_INSTALL_LOCATION";
            case INSTALL_FAILED_MEDIA_UNAVAILABLE: return "INSTALL_FAILED_MEDIA_UNAVAILABLE";
            case INSTALL_FAILED_VERIFICATION_TIMEOUT: return "INSTALL_FAILED_VERIFICATION_TIMEOUT";
            case INSTALL_FAILED_VERIFICATION_FAILURE: return "INSTALL_FAILED_VERIFICATION_FAILURE";
            case INSTALL_FAILED_PACKAGE_CHANGED: return "INSTALL_FAILED_PACKAGE_CHANGED";
            case INSTALL_FAILED_UID_CHANGED: return "INSTALL_FAILED_UID_CHANGED";
            case INSTALL_FAILED_VERSION_DOWNGRADE: return "INSTALL_FAILED_VERSION_DOWNGRADE";
            case INSTALL_PARSE_FAILED_NOT_APK: return "INSTALL_PARSE_FAILED_NOT_APK";
            case INSTALL_PARSE_FAILED_BAD_MANIFEST: return "INSTALL_PARSE_FAILED_BAD_MANIFEST";
            case INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: return "INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION";
            case INSTALL_PARSE_FAILED_NO_CERTIFICATES: return "INSTALL_PARSE_FAILED_NO_CERTIFICATES";
            case INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES: return "INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES";
            case INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING: return "INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING";
            case INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME: return "INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME";
            case INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID: return "INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID";
            case INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: return "INSTALL_PARSE_FAILED_MANIFEST_MALFORMED";
            case INSTALL_PARSE_FAILED_MANIFEST_EMPTY: return "INSTALL_PARSE_FAILED_MANIFEST_EMPTY";
            case INSTALL_FAILED_INTERNAL_ERROR: return "INSTALL_FAILED_INTERNAL_ERROR";
            case INSTALL_FAILED_USER_RESTRICTED: return "INSTALL_FAILED_USER_RESTRICTED";
            case INSTALL_FAILED_DUPLICATE_PERMISSION: return "INSTALL_FAILED_DUPLICATE_PERMISSION";
            case INSTALL_FAILED_NO_MATCHING_ABIS: return "INSTALL_FAILED_NO_MATCHING_ABIS";
            case INSTALL_FAILED_ABORTED: return "INSTALL_FAILED_ABORTED";
            default: return Integer.toString(status);
        }
    
public abstract booleanisPackageAvailable(java.lang.String packageName)
{@hide}

public abstract booleanisSafeMode()
Return whether the device has been booted into safe mode.

public abstract booleanisSignedBy(java.lang.String packageName, KeySet ks)
Return whether the package denoted by packageName has been signed by all of the keys specified by the {@link KeySet} ks. This will return true if the package has been signed by additional keys (a superset) as well. Compare to {@link #isSignedByExactly(String packageName, KeySet ks)}.

hide

public abstract booleanisSignedByExactly(java.lang.String packageName, KeySet ks)
Return whether the package denoted by packageName has been signed by all of, and only, the keys specified by the {@link KeySet} ks. Compare to {@link #isSignedBy(String packageName, KeySet ks)}.

hide

public abstract booleanisUpgrade()
Returns true if the device is upgrading, such as first boot after OTA.

hide

public abstract android.graphics.drawable.DrawableloadItemIcon(PackageItemInfo itemInfo, ApplicationInfo appInfo)

hide

public abstract android.graphics.drawable.DrawableloadUnbadgedItemIcon(PackageItemInfo itemInfo, ApplicationInfo appInfo)

hide

public abstract voidmovePackage(java.lang.String packageName, IPackageMoveObserver observer, int flags)
Attempts to move package resources from internal to external media or vice versa. Since this may take a little while, the result will be posted back to the given observer. This call may fail if the calling context lacks the {@link android.Manifest.permission#MOVE_PACKAGE} permission, if the named package cannot be found, or if the named package is a "system package".

param
packageName The name of the package to delete
param
observer An observer callback to get notified when the package move is complete. {@link android.content.pm.IPackageMoveObserver#packageMoved(boolean)} will be called when that happens. observer may be null to indicate that no callback is desired.
param
flags To indicate install location {@link #MOVE_INTERNAL} or {@link #MOVE_EXTERNAL_MEDIA}
hide

public abstract java.util.ListqueryBroadcastReceivers(android.content.Intent intent, int flags)
Retrieve all receivers that can handle a broadcast of the given intent.

param
intent The desired intent as per resolveActivity().
param
flags Additional option flags.
return
A List<ResolveInfo> containing one entry for each matching Receiver. These are ordered from first to last in priority. If there are no matching receivers, an empty list is returned.
see
#MATCH_DEFAULT_ONLY
see
#GET_INTENT_FILTERS
see
#GET_RESOLVED_FILTER

public abstract java.util.ListqueryBroadcastReceivers(android.content.Intent intent, int flags, int userId)
Retrieve all receivers that can handle a broadcast of the given intent, for a specific user.

param
intent The desired intent as per resolveActivity().
param
flags Additional option flags.
param
userId The userId of the user being queried.
return
A List<ResolveInfo> containing one entry for each matching Receiver. These are ordered from first to last in priority. If there are no matching receivers, an empty list is returned.
see
#MATCH_DEFAULT_ONLY
see
#GET_INTENT_FILTERS
see
#GET_RESOLVED_FILTER
hide

public abstract java.util.ListqueryContentProviders(java.lang.String processName, int uid, int flags)
Retrieve content provider information.

Note: unlike most other methods, an empty result set is indicated by a null return instead of an empty list.

param
processName If non-null, limits the returned providers to only those that are hosted by the given process. If null, all content providers are returned.
param
uid If processName is non-null, this is the required uid owning the requested content providers.
param
flags Additional option flags. Currently should always be 0.
return
A List<ContentProviderInfo> containing one entry for each content provider either patching processName or, if processName is null, all known content providers. If there are no matching providers, null is returned.

public abstract java.util.ListqueryInstrumentation(java.lang.String targetPackage, int flags)
Retrieve information about available instrumentation code. May be used to retrieve either all instrumentation code, or only the code targeting a particular package.

param
targetPackage If null, all instrumentation is returned; only the instrumentation targeting this package name is returned.
param
flags Additional option flags. Currently should always be 0.
return
A List<InstrumentationInfo> containing one entry for each matching available Instrumentation. Returns an empty list if there is no instrumentation available for the given package.

public abstract java.util.ListqueryIntentActivities(android.content.Intent intent, int flags)
Retrieve all activities that can be performed for the given intent.

param
intent The desired intent as per resolveActivity().
param
flags Additional option flags. The most important is {@link #MATCH_DEFAULT_ONLY}, to limit the resolution to only those activities that support the {@link android.content.Intent#CATEGORY_DEFAULT}.
return
A List<ResolveInfo> containing one entry for each matching Activity. These are ordered from best to worst match -- that is, the first item in the list is what is returned by {@link #resolveActivity}. If there are no matching activities, an empty list is returned.
see
#MATCH_DEFAULT_ONLY
see
#GET_INTENT_FILTERS
see
#GET_RESOLVED_FILTER

public abstract java.util.ListqueryIntentActivitiesAsUser(android.content.Intent intent, int flags, int userId)
Retrieve all activities that can be performed for the given intent, for a specific user.

param
intent The desired intent as per resolveActivity().
param
flags Additional option flags. The most important is {@link #MATCH_DEFAULT_ONLY}, to limit the resolution to only those activities that support the {@link android.content.Intent#CATEGORY_DEFAULT}.
return
A List<ResolveInfo> containing one entry for each matching Activity. These are ordered from best to worst match -- that is, the first item in the list is what is returned by {@link #resolveActivity}. If there are no matching activities, an empty list is returned.
see
#MATCH_DEFAULT_ONLY
see
#GET_INTENT_FILTERS
see
#GET_RESOLVED_FILTER
hide

public abstract java.util.ListqueryIntentActivityOptions(android.content.ComponentName caller, android.content.Intent[] specifics, android.content.Intent intent, int flags)
Retrieve a set of activities that should be presented to the user as similar options. This is like {@link #queryIntentActivities}, except it also allows you to supply a list of more explicit Intents that you would like to resolve to particular options, and takes care of returning the final ResolveInfo list in a reasonable order, with no duplicates, based on those inputs.

param
caller The class name of the activity that is making the request. This activity will never appear in the output list. Can be null.
param
specifics An array of Intents that should be resolved to the first specific results. Can be null.
param
intent The desired intent as per resolveActivity().
param
flags Additional option flags. The most important is {@link #MATCH_DEFAULT_ONLY}, to limit the resolution to only those activities that support the {@link android.content.Intent#CATEGORY_DEFAULT}.
return
A List<ResolveInfo> containing one entry for each matching Activity. These are ordered first by all of the intents resolved in specifics and then any additional activities that can handle intent but did not get included by one of the specifics intents. If there are no matching activities, an empty list is returned.
see
#MATCH_DEFAULT_ONLY
see
#GET_INTENT_FILTERS
see
#GET_RESOLVED_FILTER

public abstract java.util.ListqueryIntentContentProviders(android.content.Intent intent, int flags)
Retrieve all providers that can match the given intent.

param
intent An intent containing all of the desired specification (action, data, type, category, and/or component).
param
flags Additional option flags.
return
A List<ResolveInfo> containing one entry for each matching ProviderInfo. These are ordered from best to worst match. If there are no matching providers, an empty list is returned.
see
#GET_INTENT_FILTERS
see
#GET_RESOLVED_FILTER

public abstract java.util.ListqueryIntentContentProvidersAsUser(android.content.Intent intent, int flags, int userId)
{@hide}

public abstract java.util.ListqueryIntentServices(android.content.Intent intent, int flags)
Retrieve all services that can match the given intent.

param
intent The desired intent as per resolveService().
param
flags Additional option flags.
return
A List<ResolveInfo> containing one entry for each matching ServiceInfo. These are ordered from best to worst match -- that is, the first item in the list is what is returned by resolveService(). If there are no matching services, an empty list is returned.
see
#GET_INTENT_FILTERS
see
#GET_RESOLVED_FILTER

public abstract java.util.ListqueryIntentServicesAsUser(android.content.Intent intent, int flags, int userId)
Retrieve all services that can match the given intent for a given user.

param
intent The desired intent as per resolveService().
param
flags Additional option flags.
param
userId The user id.
return
A List<ResolveInfo> containing one entry for each matching ServiceInfo. These are ordered from best to worst match -- that is, the first item in the list is what is returned by resolveService(). If there are no matching services, an empty list is returned.
see
#GET_INTENT_FILTERS
see
#GET_RESOLVED_FILTER
hide

public abstract java.util.ListqueryPermissionsByGroup(java.lang.String group, int flags)
Query for all of the permissions associated with a particular group.

Throws {@link NameNotFoundException} if the given group does not exist.

param
group The fully qualified name (i.e. com.google.permission.LOGIN) of the permission group you are interested in. Use null to find all of the permissions not associated with a group.
param
flags Additional option flags. Use {@link #GET_META_DATA} to retrieve any meta-data associated with the permissions.
return
Returns a list of {@link PermissionInfo} containing information about all of the permissions in the given group.

public abstract voidremovePackageFromPreferred(java.lang.String packageName)

deprecated
This function no longer does anything; it was an old approach to managing preferred activities, which has been superseded by (and conflicts with) the modern activity-based preferences.

public abstract voidremovePermission(java.lang.String name)
Removes a permission that was previously added with {@link #addPermission(PermissionInfo)}. The same ownership rules apply -- you are only allowed to remove permissions that you are allowed to add.

param
name The name of the permission to remove.
throws
SecurityException if you are not allowed to remove the given permission name.
see
#addPermission(PermissionInfo)

public abstract voidreplacePreferredActivity(android.content.IntentFilter filter, int match, android.content.ComponentName[] set, android.content.ComponentName activity)

deprecated
This is a protected API that should not have been available to third party applications. It is the platform's responsibility for assigning preferred activities and this cannot be directly modified. Replaces an existing preferred activity mapping to the system, and if that were not present adds a new preferred activity. This will be used to automatically select the given activity component when {@link Context#startActivity(Intent) Context.startActivity()} finds multiple matching activities and also matches the given filter.
param
filter The set of intents under which this activity will be made preferred.
param
match The IntentFilter match category that this preference applies to.
param
set The set of activities that the user was picking from when this preference was made.
param
activity The component name of the activity that is to be preferred.
hide

public voidreplacePreferredActivityAsUser(android.content.IntentFilter filter, int match, android.content.ComponentName[] set, android.content.ComponentName activity, int userId)

hide

        throw new RuntimeException("Not implemented. Must override in a subclass.");
    
public abstract ResolveInforesolveActivity(android.content.Intent intent, int flags)
Determine the best action to perform for a given Intent. This is how {@link Intent#resolveActivity} finds an activity if a class has not been explicitly specified.

Note: if using an implicit Intent (without an explicit ComponentName specified), be sure to consider whether to set the {@link #MATCH_DEFAULT_ONLY} only flag. You need to do so to resolve the activity in the same way that {@link android.content.Context#startActivity(Intent)} and {@link android.content.Intent#resolveActivity(PackageManager) Intent.resolveActivity(PackageManager)} do.

param
intent An intent containing all of the desired specification (action, data, type, category, and/or component).
param
flags Additional option flags. The most important is {@link #MATCH_DEFAULT_ONLY}, to limit the resolution to only those activities that support the {@link android.content.Intent#CATEGORY_DEFAULT}.
return
Returns a ResolveInfo containing the final activity intent that was determined to be the best action. Returns null if no matching activity was found. If multiple matching activities are found and there is no default set, returns a ResolveInfo containing something else, such as the activity resolver.
see
#MATCH_DEFAULT_ONLY
see
#GET_INTENT_FILTERS
see
#GET_RESOLVED_FILTER

public abstract ResolveInforesolveActivityAsUser(android.content.Intent intent, int flags, int userId)
Determine the best action to perform for a given Intent for a given user. This is how {@link Intent#resolveActivity} finds an activity if a class has not been explicitly specified.

Note: if using an implicit Intent (without an explicit ComponentName specified), be sure to consider whether to set the {@link #MATCH_DEFAULT_ONLY} only flag. You need to do so to resolve the activity in the same way that {@link android.content.Context#startActivity(Intent)} and {@link android.content.Intent#resolveActivity(PackageManager) Intent.resolveActivity(PackageManager)} do.

param
intent An intent containing all of the desired specification (action, data, type, category, and/or component).
param
flags Additional option flags. The most important is {@link #MATCH_DEFAULT_ONLY}, to limit the resolution to only those activities that support the {@link android.content.Intent#CATEGORY_DEFAULT}.
param
userId The user id.
return
Returns a ResolveInfo containing the final activity intent that was determined to be the best action. Returns null if no matching activity was found. If multiple matching activities are found and there is no default set, returns a ResolveInfo containing something else, such as the activity resolver.
see
#MATCH_DEFAULT_ONLY
see
#GET_INTENT_FILTERS
see
#GET_RESOLVED_FILTER
hide

public abstract ProviderInforesolveContentProvider(java.lang.String name, int flags)
Find a single content provider by its base path name.

param
name The name of the provider to find.
param
flags Additional option flags. Currently should always be 0.
return
ContentProviderInfo Information about the provider, if found, else null.

public abstract ProviderInforesolveContentProviderAsUser(java.lang.String name, int flags, int userId)
Find a single content provider by its base path name.

param
name The name of the provider to find.
param
flags Additional option flags. Currently should always be 0.
param
userId The user id.
return
ContentProviderInfo Information about the provider, if found, else null.
hide

public abstract ResolveInforesolveService(android.content.Intent intent, int flags)
Determine the best service to handle for a given Intent.

param
intent An intent containing all of the desired specification (action, data, type, category, and/or component).
param
flags Additional option flags.
return
Returns a ResolveInfo containing the final service intent that was determined to be the best action. Returns null if no matching service was found.
see
#GET_INTENT_FILTERS
see
#GET_RESOLVED_FILTER

public abstract voidrevokePermission(java.lang.String packageName, java.lang.String permissionName)
Revoke a permission that was previously granted by {@link #grantPermission}.

hide
param
packageName The name of the package that the permission will be granted to.
param
permissionName The name of the permission.

public abstract voidsetApplicationEnabledSetting(java.lang.String packageName, int newState, int flags)
Set the enabled setting for an application This setting will override any enabled state which may have been set by the application in its manifest. It also overrides the enabled state set in the manifest for any of the application's components. It does not override any enabled state set by {@link #setComponentEnabledSetting} for any of the application's components.

param
packageName The package name of the application to enable
param
newState The new enabled state for the component. The legal values for this state are: {@link #COMPONENT_ENABLED_STATE_ENABLED}, {@link #COMPONENT_ENABLED_STATE_DISABLED} and {@link #COMPONENT_ENABLED_STATE_DEFAULT} The last one removes the setting, thereby restoring the applications's state to whatever was set in its manifest (or enabled, by default).
param
flags Optional behavior flags: {@link #DONT_KILL_APP} or 0.

public abstract booleansetApplicationHiddenSettingAsUser(java.lang.String packageName, boolean hidden, android.os.UserHandle userHandle)
Puts the package in a hidden state, which is almost like an uninstalled state, making the package unavailable, but it doesn't remove the data or the actual package file. Application can be unhidden by either resetting the hidden state or by installing it, such as with {@link #installExistingPackage(String)}

hide

public abstract voidsetComponentEnabledSetting(android.content.ComponentName componentName, int newState, int flags)
Set the enabled setting for a package component (activity, receiver, service, provider). This setting will override any enabled state which may have been set by the component in its manifest.

param
componentName The component to enable
param
newState The new enabled state for the component. The legal values for this state are: {@link #COMPONENT_ENABLED_STATE_ENABLED}, {@link #COMPONENT_ENABLED_STATE_DISABLED} and {@link #COMPONENT_ENABLED_STATE_DEFAULT} The last one removes the setting, thereby restoring the component's state to whatever was set in it's manifest (or enabled, by default).
param
flags Optional behavior flags: {@link #DONT_KILL_APP} or 0.

public abstract voidsetInstallerPackageName(java.lang.String targetPackage, java.lang.String installerPackageName)
Change the installer associated with a given package. There are limitations on how the installer package can be changed; in particular:
  • A SecurityException will be thrown if installerPackageName is not signed with the same certificate as the calling application.
  • A SecurityException will be thrown if targetPackage already has an installer package, and that installer package is not signed with the same certificate as the calling application.

param
targetPackage The installed package whose installer will be changed.
param
installerPackageName The package name of the new installer. May be null to clear the association.

public abstract voidverifyPendingInstall(int id, int verificationCode)
Allows a package listening to the {@link Intent#ACTION_PACKAGE_NEEDS_VERIFICATION package verification broadcast} to respond to the package manager. The response must include the {@code verificationCode} which is one of {@link PackageManager#VERIFICATION_ALLOW} or {@link PackageManager#VERIFICATION_REJECT}.

param
id pending package identifier as passed via the {@link PackageManager#EXTRA_VERIFICATION_ID} Intent extra.
param
verificationCode either {@link PackageManager#VERIFICATION_ALLOW} or {@link PackageManager#VERIFICATION_REJECT}.
throws
SecurityException if the caller does not have the PACKAGE_VERIFICATION_AGENT permission.