Added in API level 1

PackageManager


abstract class PackageManager
kotlin.Any
   ↳ android.content.pm.PackageManager

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 Context.getPackageManager.

Note: If your app targets Android 11 (API level 30) or higher, the methods in this class each return a filtered list of apps. Learn more about how to manage package visibility.

Summary

Nested classes

Specific flags used for retrieving application info.

The class containing the enabled setting of a package component.

Specific flags used for retrieving component info.

open

This exception is thrown when a given package, application, or component name cannot be found.

abstract

Listener that gets notified when checksums are available.

Specific flags used for retrieving package info.

A property value set within the manifest.

Specific flags used for retrieving resolve info.

Constants
static Int

Certificate input bytes: the input bytes represent an encoded X.

static Int

Certificate input bytes: the input bytes represent the SHA256 output of an encoded X.

static Int

Flag for setApplicationEnabledSetting(java.lang.String,int,int) and setComponentEnabledSetting(android.content.ComponentName,int,int): This component or application is in its default enabled state (as specified in its manifest).

static Int

Flag for setApplicationEnabledSetting(java.lang.String,int,int) and setComponentEnabledSetting(android.content.ComponentName,int,int): This component or application has been explicitly disabled, regardless of what it has specified in its manifest.

static Int

Flag for setApplicationEnabledSetting(java.lang.String,int,int) only: This application should be considered, until the point where the user actually wants to use it.

static Int

Flag for setApplicationEnabledSetting(java.lang.String,int,int) only: The user has explicitly disabled the application, regardless of what it has specified in its manifest.

static Int

Flag for setApplicationEnabledSetting(java.lang.String,int,int) and setComponentEnabledSetting(android.content.ComponentName,int,int): This component or application has been explictily enabled, regardless of what it has specified in its manifest.

static Int

Flag parameter for PackageInstaller.uninstall(VersionedPackage, int, IntentSender) to indicate that the deletion is an archival.

static Int

Flag parameter for setComponentEnabledSetting(android.content.ComponentName,int,int) to indicate that you don't want to kill the app containing the component.

static String

Extra field name for the ID of a package pending verification.

static String

Extra field name for the result of a verification, either VERIFICATION_ALLOW, or VERIFICATION_REJECT.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports running activities on secondary displays.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports app widgets.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's audio pipeline is low-latency, more suitable for audio applications sensitive to delays or lag in sound input or output.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes at least one form of audio output, as defined in the Android Compatibility Definition Document (CDD) section 7.8 Audio.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has professional audio level of functionality and performance.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature which indicates whether head tracking for spatial audio operates with low-latency, as defined by the CDD criteria for the feature.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports autofill of user credentials, addresses, credit cards, etc via integration with autofill.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: This is a device dedicated to showing UI on a vehicle headunit.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device can perform backup and restore operations on installed applications.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device is capable of communicating with other devices via Bluetooth.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device is capable of communicating with other devices via Bluetooth Low Energy radio.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a camera facing away from the screen.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has at least one camera pointing in some direction, or can support an external camera being connected to it.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: At least one of the cameras on the device supports the MOTION_TRACKING capability level.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's camera supports auto-focus.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: At least one of the cameras on the device supports the manual post-processing capability level.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: At least one of the cameras on the device supports the manual sensor capability level.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: At least one of the cameras on the device supports the RAW capability level.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's main front and back cameras can stream concurrently as described in android.hardware.camera2.CameraManager#getConcurrentCameraIds().

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device can support having an external camera connected to it.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's camera supports flash.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a front facing camera.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: At least one of the cameras on the device supports the full hardware capability level.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports the android.R.attr#cantSaveState API.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports android.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The Connection Service API is enabled on the device.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device is capable of communicating with consumer IR devices.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports a system interface for the user to select and bind device control services provided by applications.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports retrieval of user credentials, via integration with credential providers.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports device policy enforcement via device admins.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports locking (for example, by a financing provider in case of a missed payment).

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: This is a device for IoT and may not have an UI.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: This device supports ethernet.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports expanded picture-in-picture multi-window mode.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has biometric hardware to perform face authentication.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device does not have a touch screen, but does support touch emulation for basic events.

static String

Feature for getSystemAvailableFeatures and #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.

static String

Feature for getSystemAvailableFeatures and #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.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has biometric hardware to detect a fingerprint.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports freeform window management.

static String

Feature for getSystemAvailableFeatures and #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.

static String

Feature for getSystemAvailableFeatures and hasSystemFeature(java.lang.String,int): If this feature is supported, the device implements the Android Keystore backed by an isolated execution environment.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports high fidelity sensor processing capabilities.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports a home screen that is replaceable by third party applications.

static String

Feature for getSystemAvailableFeatures and hasSystemFeature(java.lang.String,int): If this feature is supported, the device supports android.security.identity.IdentityCredentialStore implemented in secure hardware at the given feature version.

static String

Feature for getSystemAvailableFeatures and hasSystemFeature(java.lang.String,int): If this feature is supported, the device supports android.security.identity.IdentityCredentialStore implemented in secure hardware with direct access at the given feature version.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports adding new input methods implemented with the android.inputmethodservice.InputMethodService API.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has the requisite kernel support for multinetworking-capable IPsec tunnels.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has the requisite kernel support for migrating IPsec tunnels to new source/destination addresses.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has biometric hardware to perform iris authentication.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a Keystore implementation that can create application-specific attestation keys.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a Keystore implementation that can enforce limited use key in hardware with any max usage count (including count equals to 1).

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a Keystore implementation that can only enforce limited use key in hardware with max usage count equals to 1.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports leanback UI.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports only leanback UI.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports live TV and can display contents from TV inputs implemented with the android.media.tv.TvInputService API.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports live wallpapers.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports one or more methods of reporting current location.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a Global Positioning System receiver and can report precise location.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device can report location with coarse accuracy using a network-based geolocation system.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports creating secondary users and managed profiles via DevicePolicyManager.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device can record audio via a microphone.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a full implementation of the android.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device can communicate using Near-Field Communications (NFC).

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The Beam API is enabled on the device.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports host- based NFC card emulation.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports host- based NFC-F card emulation.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports eSE- based NFC card emulation.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports uicc- based NFC card emulation.

static String

Feature for getSystemAvailableFeatures and hasSystemFeature(java.lang.String,int): If this feature is supported, the feature version specifies a date such that the device is known to pass the OpenGLES dEQP test suite associated with that date.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports the OpenGL ES Android Extension Pack.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: This is a device dedicated to be primarily used with keyboard, mouse or touchpad.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports picture-in-picture multi-window mode.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports printing.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's ActivityManager.isLowRamDevice() method returns true.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's ActivityManager.isLowRamDevice() method returns false.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports landscape orientation screens.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports portrait orientation screens.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports secure removal of users.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a secure implementation of keyguard, meaning the device supports PIN, pattern and password as defined in Android CDD

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device is compatible with Android’s security model.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes an accelerometer.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a limited axes accelerometer.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes an uncalibrated limited axes accelerometer.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes an ambient temperature sensor.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a barometer (air pressure sensor.)

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a magnetometer (compass).

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports exposing head tracker sensors from peripheral devices via the dynamic sensors API.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a gyroscope.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a limited axes gyroscope.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes an uncalibrated limited axes gyroscope.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a heading sensor.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a heart rate monitor.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The heart rate sensor on this device is an Electrocardiogram.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a hinge angle sensor.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a light sensor.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a proximity sensor.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a relative humidity sensor.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a hardware step counter.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a hardware step detector.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Open Mobile API capable eSE-based secure elements.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Open Mobile API capable SD-based secure elements.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Open Mobile API capable UICC-based secure elements.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The SIP API is enabled on the device.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports SIP-based VOIP.

static String

Feature for getSystemAvailableFeatures, hasSystemFeature(java.lang.String), and hasSystemFeature(java.lang.String,int): If this feature is supported, the device implements the Android Keystore backed by a dedicated secure processor referred to as StrongBox.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Telecom Service APIs.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a telephony radio with data communication support.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Telephony APIs for calling service.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a CDMA telephony stack.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Telephony APIs for data service.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports embedded subscriptions on eUICCs.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports multiple enabled profiles on eUICCs.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a GSM telephony stack.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports attaching to IMS implementations using the ImsService API in telephony.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports cell-broadcast reception using the MBMS APIs.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Telephony APIs for SMS and MMS.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Telephony APIs for the radio access.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Telephony APIs for the subscription.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: This is a device dedicated to showing UI on a television.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device is capable of communicating with other devices via Thread networking protocol.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's display has a touch screen.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's touch screen supports multitouch sufficient for basic two-finger gesture detection.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's touch screen is capable of tracking two or more fingers fully independently.

static String

Feature for getSystemAvailableFeatures and #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.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports connecting to USB accessories.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports connecting to USB devices as the USB host.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device is capable of communicating with other devices via ultra wideband.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports verified boot.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device implements headtracking suitable for a VR device.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device implements an optimized mode for virtual reality (VR) applications that handles stereoscopic rendering of notifications, and disables most monocular system UI components while a VR application has user focus.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device implements an optimized mode for virtual reality (VR) applications that handles stereoscopic rendering of notifications, disables most monocular system UI components while a VR application has user focus and meets extra CDD requirements to provide a high-quality VR experience.

static String

Feature for getSystemAvailableFeatures and hasSystemFeature(java.lang.String,int): If this feature is supported, the feature version specifies a date such that the device is known to pass the Vulkan dEQP test suite associated with that date.

static String

Feature for getSystemAvailableFeatures and hasSystemFeature(java.lang.String,int): If this feature is supported, the Vulkan implementation on this device is hardware accelerated, and the Vulkan native API will enumerate at least one VkPhysicalDevice, and the feature version will indicate what level of optional compute features that device supports beyond the Vulkan 1.

static String

Feature for getSystemAvailableFeatures and hasSystemFeature(java.lang.String,int): If this feature is supported, the Vulkan implementation on this device is hardware accelerated, and the Vulkan native API will enumerate at least one VkPhysicalDevice, and the feature version will indicate what level of optional hardware features limits it supports.

static String

Feature for getSystemAvailableFeatures and hasSystemFeature(java.lang.String,int): If this feature is supported, the Vulkan implementation on this device is hardware accelerated, and the feature version will indicate the highest VkPhysicalDeviceProperties::apiVersion supported by the physical devices that support the hardware level indicated by FEATURE_VULKAN_HARDWARE_LEVEL.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports showing location-based suggestions for wallet cards provided by the default payment app.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: This is a device dedicated to showing UI on a watch.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a full implementation of the android.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports WiFi (802.11) networking.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Wi-Fi Aware.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Wi-Fi Direct networking.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Wi-Fi Passpoint and all Passpoint related APIs in WifiManager are supported.

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Wi-Fi RTT (IEEE 802.11mc).

static String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports window magnification.

static Int

Permission whitelist flag: permissions whitelisted by the installer.

static Int

Permission whitelist flag: permissions whitelisted by the system.

static Int

Permission whitelist flag: permissions whitelisted by the system when upgrading from an OS version where the permission was not restricted to an OS version where the permission is restricted.

static Int

PackageInfo flag: return information about activities in the package in PackageInfo.activities.

static Int

static Long

PackageInfo flag: return all attributions declared in the package manifest

static Int

PackageInfo flag: return information about hardware preferences in PackageInfo.configPreferences, and requested features in PackageInfo.reqFeatures and PackageInfo.featureGroups.

static Int

static Int

static Int

PackageInfo flag: return the group ids that are associated with an application.

static Int

PackageInfo flag: return information about instrumentation in the package in PackageInfo.instrumentation.

static Int

PackageInfo flag: return information about the intent filters supported by the activity.

static Int

ComponentInfo flag: return the ComponentInfo.metaData data android.os.Bundles that are associated with a component.

static Int

PackageInfo flag: return information about permissions in the package in PackageInfo.permissions.

static Int

PackageInfo flag: return information about content providers in the package in PackageInfo.providers.

static Int

PackageInfo flag: return information about intent receivers in the package in PackageInfo.receivers.

static Int

ResolveInfo flag: return the IntentFilter that was matched for a particular ResolveInfo in ResolveInfo.filter.

static Int

PackageInfo flag: return information about services in the package in PackageInfo.services.

static Int

ApplicationInfo flag: return the paths to the shared libraries that are associated with an application.

static Int

PackageInfo flag: return information about the signatures included in the package.

static Int

PackageInfo flag: return the signing certificates associated with this package.

static Int

static Int

ProviderInfo flag: return the URI permission patterns that are associated with a content provider.

static Int

Code indicating that this package was installed as part of restoring from another device.

static Int

Code indicating that this package was installed as part of device setup.

static Int

Code indicating that this package was installed due to enterprise policy.

static Int

Code indicating that the reason for installing this package is unknown.

static Int

Code indicating that the package installation was initiated by the user.

static Int

Installation scenario indicating a bulk operation with the desired result of a fully optimized application.

static Int

Installation scenario indicating a bulk operation that prioritizes minimal system health impact over application optimization.

static Int

A value to indicate the lack of CUJ information, disabling all installation scenario logic.

static Int

Installation scenario providing the fastest “install button to launch" experience possible.

static Int

Querying flag: if set and if the platform is doing any filtering of the results, then the filtering will not happen.

static Int

PackageInfo flag: include APEX packages that are currently installed.

static Long

Flag parameter to also retrieve some information about archived packages.

static Int

Resolution and querying flag: if set, only filters that support the android.content.Intent#CATEGORY_DEFAULT will be considered for matching.

static Int

Querying flag: automatically match components based on their Direct Boot awareness and the current user state.

static Int

Querying flag: match components which are direct boot aware in the returned info, regardless of the current user state.

static Int

Querying flag: match components which are direct boot unaware in the returned info, regardless of the current user state.

static Int

PackageInfo flag: include disabled components in the returned info.

static Int

PackageInfo flag: include disabled components which are in that state only because of COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED in the returned info.

static Int

Querying flag: include only components from applications that are marked with ApplicationInfo.FLAG_SYSTEM.

static Int

Flag parameter to retrieve some information about all applications (even uninstalled ones) which have data directories.

static Long

Can be used as the millisecondsToDelay argument for PackageManager.extendVerificationTimeout.

static Int

Permission check result: this is returned by checkPermission if the permission has not been granted to the given package.

static Int

Permission check result: this is returned by checkPermission if the permission has been granted to the given package.

static String

Application level PackageManager for an app to inform the system that the app can be opted-in or opted-out from the compatibility treatment that rotates camera output by 90 degrees on landscape sensors on devices known to have compatibility issues.

static String

<application> level android.content.pm.PackageManager.Property tag specifying the XML resource ID containing an application's media capabilities XML file For example: <application> <property android:name="android.

static String

<application> level android.content.pm.PackageManager.Property tag specifying the XML resource ID containing the declaration of the self-certified network capabilities used by the application.

static String

<service> level android.content.pm.PackageManager.Property tag specifying the actual use case of the service if it's foreground service with the type ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE.

static Int

Signature check result: this is returned by #checkSignatures if the first package is not signed but the second is.

static Int

Signature check result: this is returned by #checkSignatures if all signatures on the two packages match.

static Int

Signature check result: this is returned by #checkSignatures if neither of the two packages is signed.

static Int

Signature check result: this is returned by #checkSignatures if not all signatures on both packages match.

static Int

Signature check result: this is returned by #checkSignatures if the second package is not signed but the first is.

static Int

Signature check result: this is returned by #checkSignatures if either of the packages are not valid.

static Int

Flag parameter for setComponentEnabledSetting(android.content.ComponentName,int,int) to indicate that the given user's package restrictions state will be serialised to disk after the component state has been updated.

static Int

Used as the verificationCode argument for PackageManager.verifyPendingInstall to indicate that the calling package verifier allows the installation to proceed.

static Int

Used as the verificationCode argument for PackageManager.verifyPendingInstall to indicate the calling package verifier does not vote to allow the installation to proceed.

static Int

Constant for specifying the highest installed package version code.

Public constructors

Public methods
abstract Unit

abstract Boolean

Add a new dynamic permission to the system.

abstract Boolean

Like addPermission(android.content.pm.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.

abstract Unit
addPreferredActivity(filter: IntentFilter, match: Int, set: Array<ComponentName!>?, activity: ComponentName)

Add a new preferred activity mapping to the system.

open Boolean
addWhitelistedRestrictedPermission(packageName: String, permName: String, whitelistFlags: Int)

Adds a whitelisted restricted permission for an app.

open Boolean
canPackageQuery(sourcePackageName: String, targetPackageName: String)

Returns true if the source package is able to query for details about the target package.

open BooleanArray
canPackageQuery(sourcePackageName: String, targetPackageNames: Array<String!>)

Same as canPackageQuery(java.lang.String,java.lang.String) but accepts an array of target packages to be queried.

abstract Boolean

Checks whether the calling package is allowed to request package installs through package installer.

abstract Array<String!>!

Map from a packages canonical name to the current name in use on the device.

abstract Int
checkPermission(permName: String, packageName: String)

Check whether a particular package has been granted a particular permission.

abstract Int
checkSignatures(uid1: Int, uid2: Int)

Like checkSignatures(java.lang.String,java.lang.String), but takes UIDs of the two packages to be checked.

abstract Int
checkSignatures(packageName1: String, packageName2: String)

Compare the signatures of two packages to determine if the same signature appears in both of them.

abstract Unit

Clears the instant application cookie for the calling app.

abstract Unit

Remove all preferred activity mappings, previously added with addPreferredActivity, from the system whose activities are implemented in the given package name.

abstract Array<String!>!

Map from the current package names in use on the device to whatever the current canonical name of that package is.

abstract Unit
extendVerificationTimeout(id: Int, verificationCodeAtTimeout: Int, millisecondsToDelay: Long)

Allows a package listening to the broadcast to extend the default timeout for a response and declare what action to perform after the timeout occurs.

abstract Drawable?

Retrieve the banner associated with an activity.

abstract Drawable?

Retrieve the banner associated with an Intent.

abstract Drawable

Retrieve the icon associated with an activity.

abstract Drawable

Retrieve the icon associated with an Intent.

open ActivityInfo

See getActivityInfo(android.content.ComponentName,int).

abstract ActivityInfo
getActivityInfo(component: ComponentName, flags: Int)

Retrieve all of the information we know about a particular activity class.

abstract Drawable?

Retrieve the logo associated with an activity.

abstract Drawable?

Retrieve the logo associated with an Intent.

abstract MutableList<PermissionGroupInfo!>

Retrieve all of the known permission groups in the system.

abstract Drawable?

Retrieve the banner associated with an application.

abstract Drawable?

Retrieve the banner associated with an application.

abstract Int

Return the enabled setting for an application.

abstract Drawable

Retrieve the icon associated with an application.

abstract Drawable
getApplicationIcon(packageName: String)

Retrieve the icon associated with an application.

open ApplicationInfo

See getApplicationInfo(java.lang.String,int).

abstract ApplicationInfo
getApplicationInfo(packageName: String, flags: Int)

Retrieve all of the information we know about a particular package/application.

abstract CharSequence

Return the label to use for this application.

abstract Drawable?

Retrieve the logo associated with an application.

abstract Drawable?
getApplicationLogo(packageName: String)

Retrieve the logo associated with an application.

open ArchivedPackageInfo?
getArchivedPackage(packageName: String)

Return archived package info for the package or null if the package is not installed.

open CharSequence

Gets the localized label that corresponds to the option in settings for granting background access.

abstract ChangedPackages?
getChangedPackages(sequenceNumber: Int)

Returns the names of the packages that have been changed [eg.

abstract Int

Return the enabled setting for a package component (activity, receiver, service, provider).

abstract Drawable

Return the generic icon for an activity that is used when no specific icon is defined.

abstract Drawable?
getDrawable(packageName: String, resid: Int, appInfo: ApplicationInfo?)

Retrieve an image from a package.

open Unit
getGroupOfPlatformPermission(permissionName: String, executor: Executor, callback: Consumer<String!>)

Get the platform-defined permission group of a particular permission, if the permission is a platform-defined permission.

open InstallSourceInfo

Retrieves information about how a package was installed or updated.

open MutableList<ApplicationInfo!>

See getInstalledApplications(int)

abstract MutableList<ApplicationInfo!>

Return a List of all application packages that are installed for the current user.

open MutableList<ModuleInfo!>

Return a List of all modules that are installed.

open MutableList<PackageInfo!>

See getInstalledPackages(int).

abstract MutableList<PackageInfo!>

Return a List of all packages that are installed for the current user.

abstract String?

Retrieve the package name of the application that installed a package.

abstract ByteArray

Gets the instant application cookie for this app.

abstract Int

Gets the maximum size in bytes of the cookie data an instant app can store on the device.

abstract InstrumentationInfo

Retrieve all of the information we know about a particular instrumentation class.

abstract Intent?

Returns a "good" intent to launch a front-door activity in a package.

open IntentSender

Returns an IntentSender that can be used to launch a front-door activity in a package.

abstract Intent?

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.

open MutableSet<String!>
getMimeGroup(mimeGroup: String)

Gets all MIME types contained by MIME group.

open ModuleInfo
getModuleInfo(packageName: String, flags: Int)

Retrieve information for a particular module.

abstract String?

Retrieve the official name associated with a uid.

open PackageInfo?

See getPackageArchiveInfo(java.lang.String,int).

open PackageInfo?
getPackageArchiveInfo(archiveFilePath: String, flags: Int)

Retrieve overall information about an application package defined in a package archive file Use getPackageArchiveInfo(java.lang.String,android.content.pm.PackageManager.PackageInfoFlags) when long flags are needed.

abstract IntArray!
getPackageGids(packageName: String)

Return an array of all of the POSIX secondary group IDs that have been assigned to the given package.

open IntArray?

See getPackageGids(java.lang.String,int).

abstract IntArray!
getPackageGids(packageName: String, flags: Int)

Return an array of all of the POSIX secondary group IDs that have been assigned to the given package.

open PackageInfo

See getPackageInfo(android.content.pm.VersionedPackage,int)

abstract PackageInfo!
getPackageInfo(versionedPackage: VersionedPackage, flags: Int)

Retrieve overall information about an application package that is installed on the system.

open PackageInfo

See getPackageInfo(java.lang.String,int)

abstract PackageInfo!
getPackageInfo(packageName: String, flags: Int)

Retrieve overall information about an application package that is installed on the system.

abstract PackageInstaller

Return interface that offers the ability to install, upgrade, and remove applications on the device.

open Int

See getPackageUid(java.lang.String,int).

abstract Int
getPackageUid(packageName: String, flags: Int)

Return the UID associated with the given package name.

abstract Array<String!>?

Retrieve the names of all packages that are associated with a particular user id.

open MutableList<PackageInfo!>

See getPackagesHoldingPermissions(java.lang.String[],int).

abstract MutableList<PackageInfo!>
getPackagesHoldingPermissions(permissions: Array<String!>, flags: Int)

Return a List of all installed packages that are currently holding any of the given permissions.

abstract PermissionGroupInfo
getPermissionGroupInfo(groupName: String, flags: Int)

Retrieve all of the information we know about a particular group of permissions.

abstract PermissionInfo!
getPermissionInfo(permName: String, flags: Int)

Retrieve all of the information we know about a particular permission.

open Unit
getPlatformPermissionsForGroup(permissionGroupName: String, executor: Executor, callback: Consumer<MutableList<String!>!>)

Get the platform-defined permissions which belong to a particular permission group.

abstract Int
getPreferredActivities(outFilters: MutableList<IntentFilter!>, outActivities: MutableList<ComponentName!>, packageName: String?)

Retrieve all preferred activities, previously added with addPreferredActivity, that are currently registered with the system.

abstract MutableList<PackageInfo!>

Retrieve the list of all currently configured preferred packages.

open PackageManager.Property
getProperty(propertyName: String, component: ComponentName)

Returns the property defined in the given component declaration.

open PackageManager.Property
getProperty(propertyName: String, packageName: String)

Returns the property defined in the given package's <application> tag.

open ProviderInfo

See getProviderInfo(android.content.ComponentName,int).

abstract ProviderInfo
getProviderInfo(component: ComponentName, flags: Int)

Retrieve all of the information we know about a particular content provider class.

open ActivityInfo

See getReceiverInfo(android.content.ComponentName,int).

abstract ActivityInfo
getReceiverInfo(component: ComponentName, flags: Int)

Retrieve all of the information we know about a particular receiver class.

abstract Resources

Retrieve the resources associated with an activity.

abstract Resources

Retrieve the resources for an application.

open Resources

Retrieve the resources for an application for the provided configuration.

abstract Resources

Retrieve the resources associated with an application.

open ServiceInfo

See getServiceInfo(android.content.ComponentName,int).

abstract ServiceInfo
getServiceInfo(component: ComponentName, flags: Int)

Retrieve all of the information we know about a particular service class.

open MutableList<SharedLibraryInfo!>

See getSharedLibraries(int).

abstract MutableList<SharedLibraryInfo!>

Get a list of shared libraries on the device.

open Bundle?

Returns a Bundle of extras that was meant to be sent to the calling app when it was suspended.

open Boolean

Return whether a synthetic app details activity will be generated if the app has no enabled launcher activity.

abstract Array<FeatureInfo!>

Get a list of features that are available on the system.

abstract Array<String!>?

Get a list of shared libraries that are available on the system.

open Int

abstract CharSequence?
getText(packageName: String, resid: Int, appInfo: ApplicationInfo?)

Retrieve text from a package.

abstract Drawable
getUserBadgedDrawableForDensity(drawable: Drawable, user: UserHandle, badgeLocation: Rect?, badgeDensity: Int)

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.

abstract Drawable

If the target user is a managed profile, then this returns a badged copy of the given icon to be able to distinguish it from the original icon.

abstract CharSequence

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.

open MutableSet<String!>
getWhitelistedRestrictedPermissions(packageName: String, whitelistFlag: Int)

Gets the restricted permissions that have been whitelisted and the app is allowed to have them granted in their full form.

abstract XmlResourceParser?
getXml(packageName: String, resid: Int, appInfo: ApplicationInfo?)

Retrieve an XML file from a package.

open Boolean
hasSigningCertificate(uid: Int, certificate: ByteArray, type: Int)

Searches the set of signing certificates by which the package(s) for the given uid has proven to have been signed.

open Boolean
hasSigningCertificate(packageName: String, certificate: ByteArray, type: Int)

Searches the set of signing certificates by which the given package has proven to have been signed.

abstract Boolean
hasSystemFeature(featureName: String)

Check whether the given feature name is one of the available features as returned by getSystemAvailableFeatures().

abstract Boolean
hasSystemFeature(featureName: String, version: Int)

Check whether the given feature name and version is one of the available features as returned by getSystemAvailableFeatures().

open Boolean
isAppArchivable(packageName: String)

Returns true if an app is archivable.

open Boolean

Note: In retrospect it would have been preferred to use more inclusive terminology when naming this API.

open Boolean

Checks whether an application is exempt from having its permissions be automatically revoked when the app is unused for an extended period of time.

open Boolean

Returns if the provided drawable represents the default activity icon provided by the system.

open Boolean

Returns true if the device is upgrading, such as first boot after OTA.

abstract Boolean

Gets whether this application is an instant app.

abstract Boolean
isInstantApp(packageName: String)

Gets whether the given package is an instant app.

open Boolean
isPackageStopped(packageName: String)

Query if an app is currently stopped.

open Boolean

Apps can query this to know if they have been suspended.

open Boolean
isPackageSuspended(packageName: String)

Query if an app is currently suspended.

abstract Boolean
isPermissionRevokedByPolicy(permName: String, packageName: String)

Checks whether a particular permissions has been revoked for a package by policy.

abstract Boolean

Return whether the device has been booted into safe mode.

open T
parseAndroidManifest(apkFileDescriptor: ParcelFileDescriptor, parserFunction: Function<XmlResourceParser!, T>)

Similar to parseAndroidManifest(java.io.File,java.util.function.Function), but accepting a file descriptor instead of a File object.

open T
parseAndroidManifest(apkFile: File, parserFunction: Function<XmlResourceParser!, T>)

Retrieve AndroidManifest.

open MutableList<PackageManager.Property!>

Returns the property definition for all <activity> and <activity-alias> tags.

open MutableList<PackageManager.Property!>

Returns the property definition for all <application> tags.

open MutableList<ResolveInfo!>

See queryBroadcastReceivers(android.content.Intent,int).

abstract MutableList<ResolveInfo!>

Retrieve all receivers that can handle a broadcast of the given intent.

open MutableList<ProviderInfo!>

See queryContentProviders(java.lang.String,int,int).

abstract MutableList<ProviderInfo!>
queryContentProviders(processName: String?, uid: Int, flags: Int)

Retrieve content provider information.

abstract MutableList<InstrumentationInfo!>
queryInstrumentation(targetPackage: String, flags: Int)

Retrieve information about available instrumentation code.

open MutableList<ResolveInfo!>

See queryIntentActivities(android.content.Intent,int).

abstract MutableList<ResolveInfo!>
queryIntentActivities(intent: Intent, flags: Int)

Retrieve all activities that can be performed for the given intent.

abstract MutableList<ResolveInfo!>
queryIntentActivityOptions(caller: ComponentName?, specifics: Array<Intent!>?, intent: Intent, flags: Int)

Retrieve a set of activities that should be presented to the user as similar options.

open MutableList<ResolveInfo!>

See queryIntentActivityOptions(android.content.ComponentName,android.content.Intent[],android.content.Intent,int).

open MutableList<ResolveInfo!>

See queryIntentContentProviders(android.content.Intent,int).

abstract MutableList<ResolveInfo!>

Retrieve all providers that can match the given intent.

open MutableList<ResolveInfo!>

See queryIntentServices(android.content.Intent,int).

abstract MutableList<ResolveInfo!>
queryIntentServices(intent: Intent, flags: Int)

Retrieve all services that can match the given intent.

abstract MutableList<PermissionInfo!>
queryPermissionsByGroup(permissionGroup: String?, flags: Int)

Query for all of the permissions associated with a particular group.

open MutableList<PackageManager.Property!>

Returns the property definition for all <provider> tags.

open MutableList<PackageManager.Property!>

Returns the property definition for all <receiver> tags.

open MutableList<PackageManager.Property!>

Returns the property definition for all <service> tags.

open Unit

Attempt to relinquish the update ownership of the given package.

abstract Unit

abstract Unit

Removes a permission that was previously added with addPermission(android.content.pm.PermissionInfo).

open Boolean
removeWhitelistedRestrictedPermission(packageName: String, permName: String, whitelistFlags: Int)

Removes a whitelisted restricted permission for an app.

open Unit
requestChecksums(packageName: String, includeSplits: Boolean, required: Int, trustedInstallers: MutableList<Certificate!>, onChecksumsReadyListener: PackageManager.OnChecksumsReadyListener)

Requests the checksums for APKs within a package.

open ResolveInfo?

See resolveActivity(android.content.Intent,int).

abstract ResolveInfo?
resolveActivity(intent: Intent, flags: Int)

Determine the best action to perform for a given Intent.

open ProviderInfo?

See resolveContentProvider(java.lang.String,int).

abstract ProviderInfo?
resolveContentProvider(authority: String, flags: Int)

Find a single content provider by its authority.

open ResolveInfo?

See resolveService(android.content.Intent,int).

abstract ResolveInfo?
resolveService(intent: Intent, flags: Int)

Determine the best service to handle for a given Intent.

abstract Unit
setApplicationCategoryHint(packageName: String, categoryHint: Int)

Provide a hint of what the ApplicationInfo.category value should be for the given package.

abstract Unit
setApplicationEnabledSetting(packageName: String, newState: Int, flags: Int)

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.

open Boolean
setAutoRevokeWhitelisted(packageName: String, whitelisted: Boolean)

Marks an application exempt from having its permissions be automatically revoked when the app is unused for an extended period of time.

abstract Unit
setComponentEnabledSetting(componentName: ComponentName, newState: Int, flags: Int)

Set the enabled setting for a package component (activity, receiver, service, provider).

open Unit

Set the enabled settings for package components such as activities, receivers, services and providers.

abstract Unit
setInstallerPackageName(targetPackage: String, installerPackageName: String?)

Change the installer associated with a given package.

open Unit
setMimeGroup(mimeGroup: String, mimeTypes: MutableSet<String!>)

Sets MIME group's MIME types.

abstract Unit

Updates the instant application cookie for the calling app.

abstract Unit
verifyPendingInstall(id: Int, verificationCode: Int)

Allows a package listening to the broadcast to respond to the package manager.

Properties
static MutableList<Certificate!>

Trust any Installer to provide checksums for the package.

static MutableList<Certificate!>

Don't trust any Installer to provide checksums for the package.

Constants

CERT_INPUT_RAW_X509

Added in API level 28
static val CERT_INPUT_RAW_X509: Int

Certificate input bytes: the input bytes represent an encoded X.509 Certificate which could be generated using an CertificateFactory

Value: 0

CERT_INPUT_SHA256

Added in API level 28
static val CERT_INPUT_SHA256: Int

Certificate input bytes: the input bytes represent the SHA256 output of an encoded X.509 Certificate.

Value: 1

COMPONENT_ENABLED_STATE_DEFAULT

Added in API level 1
static val COMPONENT_ENABLED_STATE_DEFAULT: Int

Flag for setApplicationEnabledSetting(java.lang.String,int,int) and setComponentEnabledSetting(android.content.ComponentName,int,int): This component or application is in its default enabled state (as specified in its manifest).

Explicitly setting the component state to this value restores it's enabled state to whatever is set in the manifest.

Value: 0

COMPONENT_ENABLED_STATE_DISABLED

Added in API level 1
static val COMPONENT_ENABLED_STATE_DISABLED: Int

Flag for setApplicationEnabledSetting(java.lang.String,int,int) and setComponentEnabledSetting(android.content.ComponentName,int,int): This component or application has been explicitly disabled, regardless of what it has specified in its manifest.

Value: 2

COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED

Added in API level 18
static val COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED: Int

Flag for setApplicationEnabledSetting(java.lang.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 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 setComponentEnabledSetting(android.content.ComponentName,int,int).

Value: 4

COMPONENT_ENABLED_STATE_DISABLED_USER

Added in API level 14
static val COMPONENT_ENABLED_STATE_DISABLED_USER: Int

Flag for setApplicationEnabledSetting(java.lang.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 setComponentEnabledSetting(android.content.ComponentName,int,int).

Value: 3

COMPONENT_ENABLED_STATE_ENABLED

Added in API level 1
static val COMPONENT_ENABLED_STATE_ENABLED: Int

Flag for setApplicationEnabledSetting(java.lang.String,int,int) and setComponentEnabledSetting(android.content.ComponentName,int,int): This component or application has been explictily enabled, regardless of what it has specified in its manifest.

Value: 1

DELETE_ARCHIVE

Added in API level 35
static val DELETE_ARCHIVE: Int

Flag parameter for PackageInstaller.uninstall(VersionedPackage, int, IntentSender) to indicate that the deletion is an archival. This flag is only for internal usage as part of PackageInstaller.requestArchive.

Value: 16

DONT_KILL_APP

Added in API level 1
static val DONT_KILL_APP: Int

Flag parameter for 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.

Value: 1

EXTRA_VERIFICATION_ID

Added in API level 14
static val EXTRA_VERIFICATION_ID: String

Extra field name for the ID of a package pending verification. Passed to a package verifier and is used to call back to PackageManager.verifyPendingInstall(int, int)

Value: "android.content.pm.extra.VERIFICATION_ID"

EXTRA_VERIFICATION_RESULT

Added in API level 17
static val EXTRA_VERIFICATION_RESULT: String

Extra field name for the result of a verification, either VERIFICATION_ALLOW, or VERIFICATION_REJECT. Passed to package verifiers after a package is verified.

Value: "android.content.pm.extra.VERIFICATION_RESULT"

FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS

Added in API level 26
static val FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports running activities on secondary displays. Displays here refers to both physical and virtual displays. Disabling this feature can impact support for application projection use-cases and support for virtual devices on the device.

Value: "android.software.activities_on_secondary_displays"

FEATURE_APP_WIDGETS

Added in API level 18
static val FEATURE_APP_WIDGETS: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports app widgets.

Value: "android.software.app_widgets"

FEATURE_AUDIO_LOW_LATENCY

Added in API level 9
static val FEATURE_AUDIO_LOW_LATENCY: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's audio pipeline is low-latency, more suitable for audio applications sensitive to delays or lag in sound input or output.

Value: "android.hardware.audio.low_latency"

FEATURE_AUDIO_OUTPUT

Added in API level 21
static val FEATURE_AUDIO_OUTPUT: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes at least one form of audio output, as defined in the Android Compatibility Definition Document (CDD) section 7.8 Audio.

Value: "android.hardware.audio.output"

FEATURE_AUDIO_PRO

Added in API level 23
static val FEATURE_AUDIO_PRO: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has professional audio level of functionality and performance.

Value: "android.hardware.audio.pro"

FEATURE_AUDIO_SPATIAL_HEADTRACKING_LOW_LATENCY

static val FEATURE_AUDIO_SPATIAL_HEADTRACKING_LOW_LATENCY: String

Feature for getSystemAvailableFeatures and #hasSystemFeature which indicates whether head tracking for spatial audio operates with low-latency, as defined by the CDD criteria for the feature.

Value: "android.hardware.audio.spatial.headtracking.low_latency"

FEATURE_AUTOFILL

Added in API level 26
static val FEATURE_AUTOFILL: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports autofill of user credentials, addresses, credit cards, etc via integration with autofill.

Value: "android.software.autofill"

FEATURE_AUTOMOTIVE

Added in API level 23
static val FEATURE_AUTOMOTIVE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: This is a device dedicated to showing UI on a vehicle headunit. A headunit here is defined to be inside a vehicle that may or may not be moving. A headunit uses either a primary display in the center console and/or additional displays in the instrument cluster or elsewhere in the vehicle. Headunit display(s) have limited size and resolution. The user will likely be focused on driving so limiting driver distraction is a primary concern. User input can be a variety of hard buttons, touch, rotary controllers and even mouse- like interfaces.

Value: "android.hardware.type.automotive"

FEATURE_BACKUP

Added in API level 20
static val FEATURE_BACKUP: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device can perform backup and restore operations on installed applications.

Value: "android.software.backup"

FEATURE_BLUETOOTH

Added in API level 8
static val FEATURE_BLUETOOTH: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device is capable of communicating with other devices via Bluetooth.

Value: "android.hardware.bluetooth"

FEATURE_BLUETOOTH_LE

Added in API level 18
static val FEATURE_BLUETOOTH_LE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device is capable of communicating with other devices via Bluetooth Low Energy radio.

Value: "android.hardware.bluetooth_le"

FEATURE_CAMERA

Added in API level 7
static val FEATURE_CAMERA: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a camera facing away from the screen.

Value: "android.hardware.camera"

FEATURE_CAMERA_ANY

Added in API level 17
static val FEATURE_CAMERA_ANY: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has at least one camera pointing in some direction, or can support an external camera being connected to it.

Value: "android.hardware.camera.any"

FEATURE_CAMERA_AR

Added in API level 28
static val FEATURE_CAMERA_AR: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: At least one of the cameras on the device supports the MOTION_TRACKING capability level.

Value: "android.hardware.camera.ar"

FEATURE_CAMERA_AUTOFOCUS

Added in API level 7
static val FEATURE_CAMERA_AUTOFOCUS: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's camera supports auto-focus.

Value: "android.hardware.camera.autofocus"

FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING

Added in API level 21
static val FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: At least one of the cameras on the device supports the manual post-processing capability level.

Value: "android.hardware.camera.capability.manual_post_processing"

FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR

Added in API level 21
static val FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: At least one of the cameras on the device supports the manual sensor capability level.

Value: "android.hardware.camera.capability.manual_sensor"

FEATURE_CAMERA_CAPABILITY_RAW

Added in API level 21
static val FEATURE_CAMERA_CAPABILITY_RAW: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: At least one of the cameras on the device supports the RAW capability level.

Value: "android.hardware.camera.capability.raw"

FEATURE_CAMERA_CONCURRENT

Added in API level 30
static val FEATURE_CAMERA_CONCURRENT: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's main front and back cameras can stream concurrently as described in android.hardware.camera2.CameraManager#getConcurrentCameraIds().

While android.hardware.camera2.CameraManager#getConcurrentCameraIds() and associated APIs are only available on API level 30 or newer, this feature flag may be advertised by devices on API levels below 30. If present on such a device, the same guarantees hold: The main front and main back camera can be used at the same time, with guaranteed stream configurations as defined in the table for concurrent streaming at android.hardware.camera2.CameraDevice#createCaptureSession(android.hardware.camera2.params.SessionConfiguration).

Value: "android.hardware.camera.concurrent"

FEATURE_CAMERA_EXTERNAL

Added in API level 20
static val FEATURE_CAMERA_EXTERNAL: String

Feature for getSystemAvailableFeatures and #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.

Value: "android.hardware.camera.external"

FEATURE_CAMERA_FLASH

Added in API level 7
static val FEATURE_CAMERA_FLASH: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's camera supports flash.

Value: "android.hardware.camera.flash"

FEATURE_CAMERA_FRONT

Added in API level 9
static val FEATURE_CAMERA_FRONT: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a front facing camera.

Value: "android.hardware.camera.front"

FEATURE_CAMERA_LEVEL_FULL

Added in API level 21
static val FEATURE_CAMERA_LEVEL_FULL: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: At least one of the cameras on the device supports the full hardware capability level.

Value: "android.hardware.camera.level.full"

FEATURE_CANT_SAVE_STATE

Added in API level 28
static val FEATURE_CANT_SAVE_STATE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports the android.R.attr#cantSaveState API.

Value: "android.software.cant_save_state"

FEATURE_COMPANION_DEVICE_SETUP

Added in API level 26
static val FEATURE_COMPANION_DEVICE_SETUP: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports android.companion.CompanionDeviceManager#associate with devices via android.companion.CompanionDeviceManager.

Value: "android.software.companion_device_setup"

FEATURE_CONNECTION_SERVICE

Added in API level 21
Deprecated in API level 33
static val FEATURE_CONNECTION_SERVICE: String

Deprecated: use FEATURE_TELECOM instead.

Feature for getSystemAvailableFeatures and #hasSystemFeature: The Connection Service API is enabled on the device.

Value: "android.software.connectionservice"

FEATURE_CONSUMER_IR

Added in API level 19
static val FEATURE_CONSUMER_IR: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device is capable of communicating with consumer IR devices.

Value: "android.hardware.consumerir"

FEATURE_CONTROLS

Added in API level 30
static val FEATURE_CONTROLS: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports a system interface for the user to select and bind device control services provided by applications.

Value: "android.software.controls"

FEATURE_CREDENTIALS

Added in API level 34
static val FEATURE_CREDENTIALS: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports retrieval of user credentials, via integration with credential providers.

Value: "android.software.credentials"

FEATURE_DEVICE_ADMIN

Added in API level 19
static val FEATURE_DEVICE_ADMIN: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports device policy enforcement via device admins.

Value: "android.software.device_admin"

FEATURE_DEVICE_LOCK

Added in API level 34
static val FEATURE_DEVICE_LOCK: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports locking (for example, by a financing provider in case of a missed payment).

Value: "android.software.device_lock"

FEATURE_EMBEDDED

Added in API level 26
static val FEATURE_EMBEDDED: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: This is a device for IoT and may not have an UI. An embedded device is defined as a full stack Android device with or without a display and no user-installable apps.

Value: "android.hardware.type.embedded"

FEATURE_ETHERNET

Added in API level 24
static val FEATURE_ETHERNET: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: This device supports ethernet.

Value: "android.hardware.ethernet"

FEATURE_EXPANDED_PICTURE_IN_PICTURE

Added in API level 33
static val FEATURE_EXPANDED_PICTURE_IN_PICTURE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports expanded picture-in-picture multi-window mode.

Value: "android.software.expanded_picture_in_picture"

FEATURE_FACE

Added in API level 29
static val FEATURE_FACE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has biometric hardware to perform face authentication.

Value: "android.hardware.biometrics.face"

FEATURE_FAKETOUCH

Added in API level 11
static val FEATURE_FAKETOUCH: String

Feature for getSystemAvailableFeatures and #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.

Value: "android.hardware.faketouch"

FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT

Added in API level 13
static val FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT: String

Feature for getSystemAvailableFeatures and #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 FEATURE_FAKETOUCH for input devices with this capability. Note that unlike a distinct multitouch screen as defined by 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.

Value: "android.hardware.faketouch.multitouch.distinct"

FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND

Added in API level 13
static val FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND: String

Feature for getSystemAvailableFeatures and #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 FEATURE_FAKETOUCH for input devices with this capability. Note that unlike a multitouch screen as defined by FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND, not all two finger gestures can be detected due to the limitations described for FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT.

Value: "android.hardware.faketouch.multitouch.jazzhand"

FEATURE_FINGERPRINT

Added in API level 23
static val FEATURE_FINGERPRINT: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has biometric hardware to detect a fingerprint.

Value: "android.hardware.fingerprint"

FEATURE_FREEFORM_WINDOW_MANAGEMENT

Added in API level 24
static val FEATURE_FREEFORM_WINDOW_MANAGEMENT: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports freeform window management. Windows have title bars and can be moved and resized.

Value: "android.software.freeform_window_management"

FEATURE_GAMEPAD

Added in API level 21
static val FEATURE_GAMEPAD: String

Feature for getSystemAvailableFeatures and #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.

Value: "android.hardware.gamepad"

FEATURE_HARDWARE_KEYSTORE

Added in API level 31
static val FEATURE_HARDWARE_KEYSTORE: String

Feature for getSystemAvailableFeatures and hasSystemFeature(java.lang.String,int): If this feature is supported, the device implements the Android Keystore backed by an isolated execution environment. The version indicates which features are implemented in the isolated execution environment:

This feature version is guaranteed to be set for all devices launching with Android 12 and may be set on devices launching with an earlier version. If the feature version is set, it will at least have the value 40. If it's not set the device may have a version of hardware-backed keystore but it may not support all features listed above.

Value: "android.hardware.hardware_keystore"

FEATURE_HIFI_SENSORS

Added in API level 23
static val FEATURE_HIFI_SENSORS: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports high fidelity sensor processing capabilities.

Value: "android.hardware.sensor.hifi_sensors"

FEATURE_HOME_SCREEN

Added in API level 18
static val FEATURE_HOME_SCREEN: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports a home screen that is replaceable by third party applications.

Value: "android.software.home_screen"

FEATURE_IDENTITY_CREDENTIAL_HARDWARE

Added in API level 31
static val FEATURE_IDENTITY_CREDENTIAL_HARDWARE: String

Feature for getSystemAvailableFeatures and hasSystemFeature(java.lang.String,int): If this feature is supported, the device supports android.security.identity.IdentityCredentialStore implemented in secure hardware at the given feature version.

Known feature versions include:

  • 202009: corresponds to the features included in the Identity Credential API shipped in Android 11.
  • 202101: corresponds to the features included in the Identity Credential API shipped in Android 12.
  • 202201: corresponds to the features included in the Identity Credential API shipped in Android 13.
Value: "android.hardware.identity_credential"

FEATURE_IDENTITY_CREDENTIAL_HARDWARE_DIRECT_ACCESS

Added in API level 31
static val FEATURE_IDENTITY_CREDENTIAL_HARDWARE_DIRECT_ACCESS: String

Feature for getSystemAvailableFeatures and hasSystemFeature(java.lang.String,int): If this feature is supported, the device supports android.security.identity.IdentityCredentialStore implemented in secure hardware with direct access at the given feature version. See FEATURE_IDENTITY_CREDENTIAL_HARDWARE for known feature versions.

Value: "android.hardware.identity_credential_direct_access"

FEATURE_INPUT_METHODS

Added in API level 18
static val FEATURE_INPUT_METHODS: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports adding new input methods implemented with the android.inputmethodservice.InputMethodService API.

Value: "android.software.input_methods"

FEATURE_IPSEC_TUNNELS

Added in API level 29
static val FEATURE_IPSEC_TUNNELS: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has the requisite kernel support for multinetworking-capable IPsec tunnels.

This feature implies that the device supports XFRM Interfaces (CONFIG_XFRM_INTERFACE), or VTIs with kernel patches allowing updates of output/set mark via UPDSA.

Value: "android.software.ipsec_tunnels"

FEATURE_IPSEC_TUNNEL_MIGRATION

Added in API level 34
static val FEATURE_IPSEC_TUNNEL_MIGRATION: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has the requisite kernel support for migrating IPsec tunnels to new source/destination addresses.

This feature implies that the device supports XFRM Migration (CONFIG_XFRM_MIGRATE) and has the kernel fixes to support cross-address-family IPsec tunnel migration

Value: "android.software.ipsec_tunnel_migration"

FEATURE_IRIS

Added in API level 29
static val FEATURE_IRIS: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has biometric hardware to perform iris authentication.

Value: "android.hardware.biometrics.iris"

FEATURE_KEYSTORE_APP_ATTEST_KEY

Added in API level 31
static val FEATURE_KEYSTORE_APP_ATTEST_KEY: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a Keystore implementation that can create application-specific attestation keys. See android.security.keystore.KeyGenParameterSpec.Builder#setAttestKeyAlias.

Value: "android.hardware.keystore.app_attest_key"

FEATURE_KEYSTORE_LIMITED_USE_KEY

Added in API level 31
static val FEATURE_KEYSTORE_LIMITED_USE_KEY: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a Keystore implementation that can enforce limited use key in hardware with any max usage count (including count equals to 1).

Value: "android.hardware.keystore.limited_use_key"

FEATURE_KEYSTORE_SINGLE_USE_KEY

Added in API level 31
static val FEATURE_KEYSTORE_SINGLE_USE_KEY: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a Keystore implementation that can only enforce limited use key in hardware with max usage count equals to 1.

Value: "android.hardware.keystore.single_use_key"

FEATURE_LEANBACK

Added in API level 21
static val FEATURE_LEANBACK: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports leanback UI. This is typically used in a living room television experience, but is a software feature unlike FEATURE_TELEVISION. Devices running with this feature will use resources associated with the "television" UI mode.

Value: "android.software.leanback"

FEATURE_LEANBACK_ONLY

Added in API level 26
static val FEATURE_LEANBACK_ONLY: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports only leanback UI. Only applications designed for this experience should be run, though this is not enforced by the system.

Value: "android.software.leanback_only"

FEATURE_LIVE_TV

Added in API level 21
static val FEATURE_LIVE_TV: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports live TV and can display contents from TV inputs implemented with the android.media.tv.TvInputService API.

Value: "android.software.live_tv"

FEATURE_LIVE_WALLPAPER

Added in API level 7
static val FEATURE_LIVE_WALLPAPER: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports live wallpapers.

Value: "android.software.live_wallpaper"

FEATURE_LOCATION

Added in API level 8
static val FEATURE_LOCATION: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports one or more methods of reporting current location.

Value: "android.hardware.location"

FEATURE_LOCATION_GPS

Added in API level 8
static val FEATURE_LOCATION_GPS: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a Global Positioning System receiver and can report precise location.

Value: "android.hardware.location.gps"

FEATURE_LOCATION_NETWORK

Added in API level 8
static val FEATURE_LOCATION_NETWORK: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device can report location with coarse accuracy using a network-based geolocation system.

Value: "android.hardware.location.network"

FEATURE_MANAGED_USERS

Added in API level 21
static val FEATURE_MANAGED_USERS: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports creating secondary users and managed profiles via DevicePolicyManager.

Value: "android.software.managed_users"

FEATURE_MICROPHONE

Added in API level 8
static val FEATURE_MICROPHONE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device can record audio via a microphone.

Value: "android.hardware.microphone"

FEATURE_MIDI

Added in API level 23
static val FEATURE_MIDI: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a full implementation of the android.media.midi.* APIs.

Value: "android.software.midi"

FEATURE_NFC

Added in API level 9
static val FEATURE_NFC: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device can communicate using Near-Field Communications (NFC).

Value: "android.hardware.nfc"

FEATURE_NFC_BEAM

Added in API level 29
static val FEATURE_NFC_BEAM: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The Beam API is enabled on the device.

Value: "android.sofware.nfc.beam"

FEATURE_NFC_HOST_CARD_EMULATION

Added in API level 19
static val FEATURE_NFC_HOST_CARD_EMULATION: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports host- based NFC card emulation.

Value: "android.hardware.nfc.hce"

FEATURE_NFC_HOST_CARD_EMULATION_NFCF

Added in API level 24
static val FEATURE_NFC_HOST_CARD_EMULATION_NFCF: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports host- based NFC-F card emulation.

Value: "android.hardware.nfc.hcef"

FEATURE_NFC_OFF_HOST_CARD_EMULATION_ESE

Added in API level 29
static val FEATURE_NFC_OFF_HOST_CARD_EMULATION_ESE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports eSE- based NFC card emulation.

Value: "android.hardware.nfc.ese"

FEATURE_NFC_OFF_HOST_CARD_EMULATION_UICC

Added in API level 29
static val FEATURE_NFC_OFF_HOST_CARD_EMULATION_UICC: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports uicc- based NFC card emulation.

Value: "android.hardware.nfc.uicc"

FEATURE_OPENGLES_DEQP_LEVEL

Added in API level 31
static val FEATURE_OPENGLES_DEQP_LEVEL: String

Feature for getSystemAvailableFeatures and hasSystemFeature(java.lang.String,int): If this feature is supported, the feature version specifies a date such that the device is known to pass the OpenGLES dEQP test suite associated with that date. The date is encoded as follows:

  • Year in bits 31-16
  • Month in bits 15-8
  • Day in bits 7-0

Example: 2021-03-01 is encoded as 0x07E50301, and would indicate that the device passes the OpenGL ES dEQP test suite version that was current on 2021-03-01.

Value: "android.software.opengles.deqp.level"

FEATURE_OPENGLES_EXTENSION_PACK

Added in API level 21
static val FEATURE_OPENGLES_EXTENSION_PACK: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports the OpenGL ES Android Extension Pack.

Value: "android.hardware.opengles.aep"

FEATURE_PC

Added in API level 27
static val FEATURE_PC: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: This is a device dedicated to be primarily used with keyboard, mouse or touchpad. This includes traditional desktop computers, laptops and variants such as convertibles or detachables. Due to the larger screen, the device will most likely use the FEATURE_FREEFORM_WINDOW_MANAGEMENT feature as well.

Value: "android.hardware.type.pc"

FEATURE_PICTURE_IN_PICTURE

Added in API level 24
static val FEATURE_PICTURE_IN_PICTURE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports picture-in-picture multi-window mode.

Value: "android.software.picture_in_picture"

FEATURE_PRINTING

Added in API level 20
static val FEATURE_PRINTING: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports printing.

Value: "android.software.print"

FEATURE_RAM_LOW

Added in API level 27
static val FEATURE_RAM_LOW: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's ActivityManager.isLowRamDevice() method returns true.

Value: "android.hardware.ram.low"

FEATURE_RAM_NORMAL

Added in API level 27
static val FEATURE_RAM_NORMAL: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's ActivityManager.isLowRamDevice() method returns false.

Value: "android.hardware.ram.normal"

FEATURE_SCREEN_LANDSCAPE

Added in API level 13
static val FEATURE_SCREEN_LANDSCAPE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports landscape orientation screens. For backwards compatibility, you can assume that if neither this nor FEATURE_SCREEN_PORTRAIT is set then the device supports both portrait and landscape.

Value: "android.hardware.screen.landscape"

FEATURE_SCREEN_PORTRAIT

Added in API level 13
static val FEATURE_SCREEN_PORTRAIT: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports portrait orientation screens. For backwards compatibility, you can assume that if neither this nor FEATURE_SCREEN_LANDSCAPE is set then the device supports both portrait and landscape.

Value: "android.hardware.screen.portrait"

FEATURE_SECURELY_REMOVES_USERS

Added in API level 21
static val FEATURE_SECURELY_REMOVES_USERS: String

Feature for getSystemAvailableFeatures and #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.

Value: "android.software.securely_removes_users"

FEATURE_SECURE_LOCK_SCREEN

Added in API level 29
static val FEATURE_SECURE_LOCK_SCREEN: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a secure implementation of keyguard, meaning the device supports PIN, pattern and password as defined in Android CDD

Value: "android.software.secure_lock_screen"

FEATURE_SECURITY_MODEL_COMPATIBLE

Added in API level 31
static val FEATURE_SECURITY_MODEL_COMPATIBLE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device is compatible with Android’s security model.

See sections 2 and 9 in the Android CDD for more details.

Value: "android.hardware.security.model.compatible"

FEATURE_SENSOR_ACCELEROMETER

Added in API level 8
static val FEATURE_SENSOR_ACCELEROMETER: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes an accelerometer.

Value: "android.hardware.sensor.accelerometer"

FEATURE_SENSOR_ACCELEROMETER_LIMITED_AXES

Added in API level 33
static val FEATURE_SENSOR_ACCELEROMETER_LIMITED_AXES: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a limited axes accelerometer.

Value: "android.hardware.sensor.accelerometer_limited_axes"

FEATURE_SENSOR_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED

Added in API level 33
static val FEATURE_SENSOR_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes an uncalibrated limited axes accelerometer.

Value: "android.hardware.sensor.accelerometer_limited_axes_uncalibrated"

FEATURE_SENSOR_AMBIENT_TEMPERATURE

Added in API level 21
static val FEATURE_SENSOR_AMBIENT_TEMPERATURE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes an ambient temperature sensor.

Value: "android.hardware.sensor.ambient_temperature"

FEATURE_SENSOR_BAROMETER

Added in API level 9
static val FEATURE_SENSOR_BAROMETER: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a barometer (air pressure sensor.)

Value: "android.hardware.sensor.barometer"

FEATURE_SENSOR_COMPASS

Added in API level 8
static val FEATURE_SENSOR_COMPASS: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a magnetometer (compass).

Value: "android.hardware.sensor.compass"

FEATURE_SENSOR_DYNAMIC_HEAD_TRACKER

Added in API level 33
static val FEATURE_SENSOR_DYNAMIC_HEAD_TRACKER: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports exposing head tracker sensors from peripheral devices via the dynamic sensors API.

Value: "android.hardware.sensor.dynamic.head_tracker"

FEATURE_SENSOR_GYROSCOPE

Added in API level 9
static val FEATURE_SENSOR_GYROSCOPE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a gyroscope.

Value: "android.hardware.sensor.gyroscope"

FEATURE_SENSOR_GYROSCOPE_LIMITED_AXES

Added in API level 33
static val FEATURE_SENSOR_GYROSCOPE_LIMITED_AXES: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a limited axes gyroscope.

Value: "android.hardware.sensor.gyroscope_limited_axes"

FEATURE_SENSOR_GYROSCOPE_LIMITED_AXES_UNCALIBRATED

Added in API level 33
static val FEATURE_SENSOR_GYROSCOPE_LIMITED_AXES_UNCALIBRATED: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes an uncalibrated limited axes gyroscope.

Value: "android.hardware.sensor.gyroscope_limited_axes_uncalibrated"

FEATURE_SENSOR_HEADING

Added in API level 33
static val FEATURE_SENSOR_HEADING: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a heading sensor.

Value: "android.hardware.sensor.heading"

FEATURE_SENSOR_HEART_RATE

Added in API level 20
static val FEATURE_SENSOR_HEART_RATE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a heart rate monitor.

Value: "android.hardware.sensor.heartrate"

FEATURE_SENSOR_HEART_RATE_ECG

Added in API level 21
static val FEATURE_SENSOR_HEART_RATE_ECG: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The heart rate sensor on this device is an Electrocardiogram.

Value: "android.hardware.sensor.heartrate.ecg"

FEATURE_SENSOR_HINGE_ANGLE

Added in API level 30
static val FEATURE_SENSOR_HINGE_ANGLE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a hinge angle sensor.

Value: "android.hardware.sensor.hinge_angle"

FEATURE_SENSOR_LIGHT

Added in API level 7
static val FEATURE_SENSOR_LIGHT: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a light sensor.

Value: "android.hardware.sensor.light"

FEATURE_SENSOR_PROXIMITY

Added in API level 7
static val FEATURE_SENSOR_PROXIMITY: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a proximity sensor.

Value: "android.hardware.sensor.proximity"

FEATURE_SENSOR_RELATIVE_HUMIDITY

Added in API level 21
static val FEATURE_SENSOR_RELATIVE_HUMIDITY: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a relative humidity sensor.

Value: "android.hardware.sensor.relative_humidity"

FEATURE_SENSOR_STEP_COUNTER

Added in API level 19
static val FEATURE_SENSOR_STEP_COUNTER: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a hardware step counter.

Value: "android.hardware.sensor.stepcounter"

FEATURE_SENSOR_STEP_DETECTOR

Added in API level 19
static val FEATURE_SENSOR_STEP_DETECTOR: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device includes a hardware step detector.

Value: "android.hardware.sensor.stepdetector"

FEATURE_SE_OMAPI_ESE

Added in API level 30
static val FEATURE_SE_OMAPI_ESE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Open Mobile API capable eSE-based secure elements.

Value: "android.hardware.se.omapi.ese"

FEATURE_SE_OMAPI_SD

Added in API level 30
static val FEATURE_SE_OMAPI_SD: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Open Mobile API capable SD-based secure elements.

Value: "android.hardware.se.omapi.sd"

FEATURE_SE_OMAPI_UICC

Added in API level 30
static val FEATURE_SE_OMAPI_UICC: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Open Mobile API capable UICC-based secure elements.

Value: "android.hardware.se.omapi.uicc"

FEATURE_SIP

Added in API level 9
static val FEATURE_SIP: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The SIP API is enabled on the device.

Value: "android.software.sip"

FEATURE_SIP_VOIP

Added in API level 9
static val FEATURE_SIP_VOIP: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports SIP-based VOIP.

Value: "android.software.sip.voip"

FEATURE_STRONGBOX_KEYSTORE

Added in API level 28
static val FEATURE_STRONGBOX_KEYSTORE: String

Feature for getSystemAvailableFeatures, hasSystemFeature(java.lang.String), and hasSystemFeature(java.lang.String,int): If this feature is supported, the device implements the Android Keystore backed by a dedicated secure processor referred to as StrongBox. If this feature has a version, the version number indicates which features are implemented in StrongBox:

If a device has StrongBox, this feature version number is guaranteed to be set for all devices launching with Android 12 and may be set on devices launching with an earlier version. If the feature version is set, it will at least have the value 40. If it's not set the device may have StrongBox but it may not support all features listed above.

Value: "android.hardware.strongbox_keystore"

FEATURE_TELECOM

Added in API level 33
static val FEATURE_TELECOM: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Telecom Service APIs.

Value: "android.software.telecom"

FEATURE_TELEPHONY

Added in API level 7
static val FEATURE_TELEPHONY: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a telephony radio with data communication support.

Value: "android.hardware.telephony"

FEATURE_TELEPHONY_CALLING

Added in API level 33
static val FEATURE_TELEPHONY_CALLING: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Telephony APIs for calling service.

This feature should only be defined if FEATURE_TELEPHONY_RADIO_ACCESS, FEATURE_TELEPHONY_SUBSCRIPTION, and FEATURE_TELECOM have been defined.

Value: "android.hardware.telephony.calling"

FEATURE_TELEPHONY_CDMA

Added in API level 7
static val FEATURE_TELEPHONY_CDMA: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a CDMA telephony stack.

This feature should only be defined if FEATURE_TELEPHONY has been defined.

Value: "android.hardware.telephony.cdma"

FEATURE_TELEPHONY_DATA

Added in API level 33
static val FEATURE_TELEPHONY_DATA: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Telephony APIs for data service.

This feature should only be defined if both FEATURE_TELEPHONY_SUBSCRIPTION and FEATURE_TELEPHONY_RADIO_ACCESS have been defined.

Value: "android.hardware.telephony.data"

FEATURE_TELEPHONY_EUICC

Added in API level 28
static val FEATURE_TELEPHONY_EUICC: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports embedded subscriptions on eUICCs. This feature should only be defined if FEATURE_TELEPHONY_SUBSCRIPTION has been defined.

Value: "android.hardware.telephony.euicc"

FEATURE_TELEPHONY_EUICC_MEP

Added in API level 33
static val FEATURE_TELEPHONY_EUICC_MEP: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports multiple enabled profiles on eUICCs.

Devices declaring this feature must have an implementation of the UiccCardInfo.getPorts, UiccCardInfo.isMultipleEnabledProfilesSupported and android.telephony.euicc.EuiccManager#switchToSubscription. This feature should only be defined if FEATURE_TELEPHONY_EUICC have been defined.

Value: "android.hardware.telephony.euicc.mep"

FEATURE_TELEPHONY_GSM

Added in API level 7
static val FEATURE_TELEPHONY_GSM: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a GSM telephony stack.

This feature should only be defined if FEATURE_TELEPHONY has been defined.

Value: "android.hardware.telephony.gsm"

FEATURE_TELEPHONY_IMS

Added in API level 29
static val FEATURE_TELEPHONY_IMS: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports attaching to IMS implementations using the ImsService API in telephony.

This feature should only be defined if FEATURE_TELEPHONY_DATA has been defined.

Value: "android.hardware.telephony.ims"

FEATURE_TELEPHONY_MBMS

Added in API level 28
static val FEATURE_TELEPHONY_MBMS: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports cell-broadcast reception using the MBMS APIs.

This feature should only be defined if both FEATURE_TELEPHONY_SUBSCRIPTION and FEATURE_TELEPHONY_RADIO_ACCESS have been defined.

Value: "android.hardware.telephony.mbms"

FEATURE_TELEPHONY_MESSAGING

Added in API level 33
static val FEATURE_TELEPHONY_MESSAGING: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Telephony APIs for SMS and MMS.

This feature should only be defined if both FEATURE_TELEPHONY_SUBSCRIPTION and FEATURE_TELEPHONY_RADIO_ACCESS have been defined.

Value: "android.hardware.telephony.messaging"

FEATURE_TELEPHONY_RADIO_ACCESS

Added in API level 33
static val FEATURE_TELEPHONY_RADIO_ACCESS: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Telephony APIs for the radio access.

This feature should only be defined if FEATURE_TELEPHONY has been defined.

Value: "android.hardware.telephony.radio.access"

FEATURE_TELEPHONY_SUBSCRIPTION

Added in API level 33
static val FEATURE_TELEPHONY_SUBSCRIPTION: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Telephony APIs for the subscription.

This feature should only be defined if FEATURE_TELEPHONY has been defined.

Value: "android.hardware.telephony.subscription"

FEATURE_TELEVISION

Added in API level 16
Deprecated in API level 21
static val FEATURE_TELEVISION: String

Deprecated: use FEATURE_LEANBACK instead.

Feature for getSystemAvailableFeatures and #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.

Value: "android.hardware.type.television"

FEATURE_THREAD_NETWORK

static val FEATURE_THREAD_NETWORK: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device is capable of communicating with other devices via Thread networking protocol.

Value: "android.hardware.thread_network"

FEATURE_TOUCHSCREEN

Added in API level 8
static val FEATURE_TOUCHSCREEN: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's display has a touch screen.

Value: "android.hardware.touchscreen"

FEATURE_TOUCHSCREEN_MULTITOUCH

Added in API level 7
static val FEATURE_TOUCHSCREEN_MULTITOUCH: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's touch screen supports multitouch sufficient for basic two-finger gesture detection.

Value: "android.hardware.touchscreen.multitouch"

FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT

Added in API level 8
static val FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device's touch screen is capable of tracking two or more fingers fully independently.

Value: "android.hardware.touchscreen.multitouch.distinct"

FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND

Added in API level 9
static val FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND: String

Feature for getSystemAvailableFeatures and #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.

Value: "android.hardware.touchscreen.multitouch.jazzhand"

FEATURE_USB_ACCESSORY

Added in API level 12
static val FEATURE_USB_ACCESSORY: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports connecting to USB accessories.

Value: "android.hardware.usb.accessory"

FEATURE_USB_HOST

Added in API level 12
static val FEATURE_USB_HOST: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports connecting to USB devices as the USB host.

Value: "android.hardware.usb.host"

FEATURE_UWB

Added in API level 34
static val FEATURE_UWB: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device is capable of communicating with other devices via ultra wideband.

Value: "android.hardware.uwb"

FEATURE_VERIFIED_BOOT

Added in API level 21
static val FEATURE_VERIFIED_BOOT: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports verified boot.

Value: "android.software.verified_boot"

FEATURE_VR_HEADTRACKING

Added in API level 26
static val FEATURE_VR_HEADTRACKING: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device implements headtracking suitable for a VR device.

Value: "android.hardware.vr.headtracking"

FEATURE_VR_MODE

Added in API level 24
Deprecated in API level 28
static val FEATURE_VR_MODE: String

Deprecated: use FEATURE_VR_MODE_HIGH_PERFORMANCE instead.

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device implements an optimized mode for virtual reality (VR) applications that handles stereoscopic rendering of notifications, and disables most monocular system UI components while a VR application has user focus. Devices declaring this feature must include an application implementing a android.service.vr.VrListenerService that can be targeted by VR applications via android.app.Activity#setVrModeEnabled.

Value: "android.software.vr.mode"

FEATURE_VR_MODE_HIGH_PERFORMANCE

Added in API level 24
static val FEATURE_VR_MODE_HIGH_PERFORMANCE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device implements an optimized mode for virtual reality (VR) applications that handles stereoscopic rendering of notifications, disables most monocular system UI components while a VR application has user focus and meets extra CDD requirements to provide a high-quality VR experience. Devices declaring this feature must include an application implementing a android.service.vr.VrListenerService that can be targeted by VR applications via android.app.Activity#setVrModeEnabled. and must meet CDD requirements to provide a high-quality VR experience.

Value: "android.hardware.vr.high_performance"

FEATURE_VULKAN_DEQP_LEVEL

Added in API level 30
static val FEATURE_VULKAN_DEQP_LEVEL: String

Feature for getSystemAvailableFeatures and hasSystemFeature(java.lang.String,int): If this feature is supported, the feature version specifies a date such that the device is known to pass the Vulkan dEQP test suite associated with that date. The date is encoded as follows:

  • Year in bits 31-16
  • Month in bits 15-8
  • Day in bits 7-0

Example: 2019-03-01 is encoded as 0x07E30301, and would indicate that the device passes the Vulkan dEQP test suite version that was current on 2019-03-01.

Value: "android.software.vulkan.deqp.level"

FEATURE_VULKAN_HARDWARE_COMPUTE

Added in API level 26
static val FEATURE_VULKAN_HARDWARE_COMPUTE: String

Feature for getSystemAvailableFeatures and hasSystemFeature(java.lang.String,int): If this feature is supported, the Vulkan implementation on this device is hardware accelerated, and the Vulkan native API will enumerate at least one VkPhysicalDevice, and the feature version will indicate what level of optional compute features that device supports beyond the Vulkan 1.0 requirements.

Compute level 0 indicates:

  • The VK_KHR_variable_pointers extension and VkPhysicalDeviceVariablePointerFeaturesKHR::variablePointers feature are supported.
  • VkPhysicalDeviceLimits::maxPerStageDescriptorStorageBuffers is at least 16.
Value: "android.hardware.vulkan.compute"

FEATURE_VULKAN_HARDWARE_LEVEL

Added in API level 24
static val FEATURE_VULKAN_HARDWARE_LEVEL: String

Feature for getSystemAvailableFeatures and hasSystemFeature(java.lang.String,int): If this feature is supported, the Vulkan implementation on this device is hardware accelerated, and the Vulkan native API will enumerate at least one VkPhysicalDevice, and the feature version will indicate what level of optional hardware features limits it supports.

Level 0 includes the base Vulkan requirements as well as:

  • VkPhysicalDeviceFeatures::textureCompressionETC2

Level 1 additionally includes:

  • VkPhysicalDeviceFeatures::fullDrawIndexUint32
  • VkPhysicalDeviceFeatures::imageCubeArray
  • VkPhysicalDeviceFeatures::independentBlend
  • VkPhysicalDeviceFeatures::geometryShader
  • VkPhysicalDeviceFeatures::tessellationShader
  • VkPhysicalDeviceFeatures::sampleRateShading
  • VkPhysicalDeviceFeatures::textureCompressionASTC_LDR
  • VkPhysicalDeviceFeatures::fragmentStoresAndAtomics
  • VkPhysicalDeviceFeatures::shaderImageGatherExtended
  • VkPhysicalDeviceFeatures::shaderUniformBufferArrayDynamicIndexing
  • VkPhysicalDeviceFeatures::shaderSampledImageArrayDynamicIndexing
Value: "android.hardware.vulkan.level"

FEATURE_VULKAN_HARDWARE_VERSION

Added in API level 24
static val FEATURE_VULKAN_HARDWARE_VERSION: String

Feature for getSystemAvailableFeatures and hasSystemFeature(java.lang.String,int): If this feature is supported, the Vulkan implementation on this device is hardware accelerated, and the feature version will indicate the highest VkPhysicalDeviceProperties::apiVersion supported by the physical devices that support the hardware level indicated by FEATURE_VULKAN_HARDWARE_LEVEL. The feature version uses the same encoding as Vulkan version numbers:

  • Major version number in bits 31-22
  • Minor version number in bits 21-12
  • Patch version number in bits 11-0
A version of 1.1.0 or higher also indicates:
  • The VK_ANDROID_external_memory_android_hardware_buffer extension is supported.
  • SYNC_FD external semaphore and fence handles are supported.
  • VkPhysicalDeviceSamplerYcbcrConversionFeatures::samplerYcbcrConversion is supported.
A subset of devices that support Vulkan 1.1 do so via software emulation. For more information, see Vulkan Design Guidelines.

Value: "android.hardware.vulkan.version"

FEATURE_WALLET_LOCATION_BASED_SUGGESTIONS

Added in API level 34
static val FEATURE_WALLET_LOCATION_BASED_SUGGESTIONS: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports showing location-based suggestions for wallet cards provided by the default payment app.

Value: "android.software.wallet_location_based_suggestions"

FEATURE_WATCH

Added in API level 20
static val FEATURE_WATCH: String

Feature for getSystemAvailableFeatures and #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.

Value: "android.hardware.type.watch"

FEATURE_WEBVIEW

Added in API level 20
static val FEATURE_WEBVIEW: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device has a full implementation of the android.webkit.* APIs. Devices lacking this feature will not have a functioning WebView implementation.

Value: "android.software.webview"

FEATURE_WIFI

Added in API level 8
static val FEATURE_WIFI: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports WiFi (802.11) networking.

Value: "android.hardware.wifi"

FEATURE_WIFI_AWARE

Added in API level 26
static val FEATURE_WIFI_AWARE: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Wi-Fi Aware.

Value: "android.hardware.wifi.aware"

FEATURE_WIFI_DIRECT

Added in API level 14
static val FEATURE_WIFI_DIRECT: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Wi-Fi Direct networking.

Value: "android.hardware.wifi.direct"

FEATURE_WIFI_PASSPOINT

Added in API level 27
static val FEATURE_WIFI_PASSPOINT: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Wi-Fi Passpoint and all Passpoint related APIs in WifiManager are supported. Refer to WifiManager.addOrUpdatePasspointConfiguration for more info.

Value: "android.hardware.wifi.passpoint"

FEATURE_WIFI_RTT

Added in API level 28
static val FEATURE_WIFI_RTT: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports Wi-Fi RTT (IEEE 802.11mc).

Value: "android.hardware.wifi.rtt"

FEATURE_WINDOW_MAGNIFICATION

Added in API level 33
static val FEATURE_WINDOW_MAGNIFICATION: String

Feature for getSystemAvailableFeatures and #hasSystemFeature: The device supports window magnification.

Value: "android.software.window_magnification"

FLAG_PERMISSION_WHITELIST_INSTALLER

Added in API level 29
static val FLAG_PERMISSION_WHITELIST_INSTALLER: Int

Permission whitelist flag: permissions whitelisted by the installer. Permissions can also be whitelisted by the system, on upgrade, or on role grant.

Note: In retrospect it would have been preferred to use more inclusive terminology when naming this API. Similar APIs added will refrain from using the term "whitelist".

Value: 2

FLAG_PERMISSION_WHITELIST_SYSTEM

Added in API level 29
static val FLAG_PERMISSION_WHITELIST_SYSTEM: Int

Permission whitelist flag: permissions whitelisted by the system. Permissions can also be whitelisted by the installer, on upgrade, or on role grant.

Note: In retrospect it would have been preferred to use more inclusive terminology when naming this API. Similar APIs added will refrain from using the term "whitelist".

Value: 1

FLAG_PERMISSION_WHITELIST_UPGRADE

Added in API level 29
static val FLAG_PERMISSION_WHITELIST_UPGRADE: Int

Permission whitelist flag: permissions whitelisted by the system when upgrading from an OS version where the permission was not restricted to an OS version where the permission is restricted. Permissions can also be whitelisted by the installer, the system, or on role grant.

Note: In retrospect it would have been preferred to use more inclusive terminology when naming this API. Similar APIs added will refrain from using the term "whitelist".

Value: 4

GET_ACTIVITIES

Added in API level 1
static val GET_ACTIVITIES: Int

PackageInfo flag: return information about activities in the package in PackageInfo.activities.

Value: 1

GET_ATTRIBUTIONS

Added in API level 31
Deprecated in API level 34
static val GET_ATTRIBUTIONS: Int

Deprecated: Use GET_ATTRIBUTIONS_LONG to avoid unintended sign extension.

Value: -2147483648

GET_ATTRIBUTIONS_LONG

Added in API level 34
static val GET_ATTRIBUTIONS_LONG: Long

PackageInfo flag: return all attributions declared in the package manifest

Value: 2147483648L

GET_CONFIGURATIONS

Added in API level 3
static val GET_CONFIGURATIONS: Int

PackageInfo flag: return information about hardware preferences in PackageInfo.configPreferences, and requested features in PackageInfo.reqFeatures and PackageInfo.featureGroups.

Value: 16384

GET_DISABLED_COMPONENTS

Added in API level 1
Deprecated in API level 24
static val GET_DISABLED_COMPONENTS: Int

Deprecated: replaced with MATCH_DISABLED_COMPONENTS

Value: 512

GET_DISABLED_UNTIL_USED_COMPONENTS

Added in API level 18
Deprecated in API level 24
static val GET_DISABLED_UNTIL_USED_COMPONENTS: Int

Deprecated: replaced with MATCH_DISABLED_UNTIL_USED_COMPONENTS.

Value: 32768

GET_GIDS

Added in API level 1
static val GET_GIDS: Int

PackageInfo flag: return the group ids that are associated with an application. This applies for any API returning a PackageInfo class, either directly or nested inside of another.

Value: 256

GET_INSTRUMENTATION

Added in API level 1
static val GET_INSTRUMENTATION: Int

PackageInfo flag: return information about instrumentation in the package in PackageInfo.instrumentation.

Value: 16

GET_INTENT_FILTERS

Added in API level 1
Deprecated in API level 31
static val GET_INTENT_FILTERS: Int

Deprecated: The platform does not support getting IntentFilters for the package.

PackageInfo flag: return information about the intent filters supported by the activity.

Value: 32

GET_META_DATA

Added in API level 1
static val GET_META_DATA: Int

ComponentInfo flag: return the ComponentInfo.metaData data android.os.Bundles that are associated with a component. This applies for any API returning a ComponentInfo subclass.

Value: 128

GET_PERMISSIONS

Added in API level 1
static val GET_PERMISSIONS: Int

PackageInfo flag: return information about permissions in the package in PackageInfo.permissions.

Value: 4096

GET_PROVIDERS

Added in API level 1
static val GET_PROVIDERS: Int

PackageInfo flag: return information about content providers in the package in PackageInfo.providers.

Value: 8

GET_RECEIVERS

Added in API level 1
static val GET_RECEIVERS: Int

PackageInfo flag: return information about intent receivers in the package in PackageInfo.receivers.

Value: 2

GET_RESOLVED_FILTER

Added in API level 1
static val GET_RESOLVED_FILTER: Int

ResolveInfo flag: return the IntentFilter that was matched for a particular ResolveInfo in ResolveInfo.filter.

Value: 64

GET_SERVICES

Added in API level 1
static val GET_SERVICES: Int

PackageInfo flag: return information about services in the package in PackageInfo.services.

Value: 4

GET_SHARED_LIBRARY_FILES

Added in API level 1
static val GET_SHARED_LIBRARY_FILES: Int

ApplicationInfo flag: return the 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.

Value: 1024

GET_SIGNATURES

Added in API level 1
Deprecated in API level 28
static val GET_SIGNATURES: Int

Deprecated: use GET_SIGNING_CERTIFICATES instead

PackageInfo flag: return information about the signatures included in the package.

Value: 64

GET_SIGNING_CERTIFICATES

Added in API level 28
static val GET_SIGNING_CERTIFICATES: Int

PackageInfo flag: return the signing certificates associated with this package. Each entry is a signing certificate that the package has proven it is authorized to use, usually a past signing certificate from which it has rotated.

Value: 134217728

GET_UNINSTALLED_PACKAGES

Added in API level 3
Deprecated in API level 24
static val GET_UNINSTALLED_PACKAGES: Int

Deprecated: replaced with MATCH_UNINSTALLED_PACKAGES

Value: 8192

GET_URI_PERMISSION_PATTERNS

Added in API level 1
static val GET_URI_PERMISSION_PATTERNS: Int

ProviderInfo flag: return the 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.

Value: 2048

INSTALL_REASON_DEVICE_RESTORE

Added in API level 26
static val INSTALL_REASON_DEVICE_RESTORE: Int

Code indicating that this package was installed as part of restoring from another device.

Value: 2

INSTALL_REASON_DEVICE_SETUP

Added in API level 26
static val INSTALL_REASON_DEVICE_SETUP: Int

Code indicating that this package was installed as part of device setup.

Value: 3

INSTALL_REASON_POLICY

Added in API level 26
static val INSTALL_REASON_POLICY: Int

Code indicating that this package was installed due to enterprise policy.

Value: 1

INSTALL_REASON_UNKNOWN

Added in API level 26
static val INSTALL_REASON_UNKNOWN: Int

Code indicating that the reason for installing this package is unknown.

Value: 0

INSTALL_REASON_USER

Added in API level 26
static val INSTALL_REASON_USER: Int

Code indicating that the package installation was initiated by the user.

Value: 4

INSTALL_SCENARIO_BULK

Added in API level 31
static val INSTALL_SCENARIO_BULK: Int

Installation scenario indicating a bulk operation with the desired result of a fully optimized application. If the system is busy or resources are scarce the system will perform less work to avoid impacting system health. Examples of bulk installation scenarios might include device restore, background updates of multiple applications, or user-triggered updates for all applications. The decision to use BULK or BULK_SECONDARY should be based on the desired user experience. BULK_SECONDARY operations may take less time to complete but, when they do, will produce less optimized applications. The device state (e.g. memory usage or battery status) should not be considered when making this decision as those factors are taken into account by the Package Manager when acting on the installation scenario.

Value: 2

INSTALL_SCENARIO_BULK_SECONDARY

Added in API level 31
static val INSTALL_SCENARIO_BULK_SECONDARY: Int

Installation scenario indicating a bulk operation that prioritizes minimal system health impact over application optimization. The application may undergo additional optimization if the system is idle and system resources are abundant. The more elements of a bulk operation that are marked BULK_SECONDARY, the faster the entire bulk operation will be. See the comments for INSTALL_SCENARIO_BULK for more information.

Value: 3

INSTALL_SCENARIO_DEFAULT

Added in API level 31
static val INSTALL_SCENARIO_DEFAULT: Int

A value to indicate the lack of CUJ information, disabling all installation scenario logic.

Value: 0

INSTALL_SCENARIO_FAST

Added in API level 31
static val INSTALL_SCENARIO_FAST: Int

Installation scenario providing the fastest “install button to launch" experience possible.

Value: 1

MATCH_ALL

Added in API level 23
static val MATCH_ALL: Int

Querying flag: if set and if the platform is doing any filtering of the results, then the filtering will not happen. This is a synonym for saying that all results should be returned.

This flag should be used with extreme care.

Value: 131072

MATCH_APEX

Added in API level 29
static val MATCH_APEX: Int

PackageInfo flag: include APEX packages that are currently installed. In APEX terminology, this corresponds to packages that are currently active, i.e. mounted and available to other processes of the OS. In particular, this flag alone will not match APEX files that are staged for activation at next reboot.

Value: 1073741824

MATCH_ARCHIVED_PACKAGES

Added in API level 35
static val MATCH_ARCHIVED_PACKAGES: Long

Flag parameter to also retrieve some information about archived packages. Packages can be archived through PackageInstaller.requestArchive and do not have any APKs stored on the device, but do keep the data directory.

Note: Archived apps are a subset of apps returned by MATCH_UNINSTALLED_PACKAGES.

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

Note: use of this flag requires the android.permission.QUERY_ALL_PACKAGES permission to see uninstalled packages.

Value: 4294967296L

MATCH_DEFAULT_ONLY

Added in API level 1
static val MATCH_DEFAULT_ONLY: Int

Resolution and querying flag: if set, only filters that support the android.content.Intent#CATEGORY_DEFAULT will be considered for matching. This is a synonym for including the CATEGORY_DEFAULT in your supplied Intent.

Value: 65536

MATCH_DIRECT_BOOT_AUTO

Added in API level 29
static val MATCH_DIRECT_BOOT_AUTO: Int

Querying flag: automatically match components based on their Direct Boot awareness and the current user state.

Since the default behavior is to automatically apply the current user state, this is effectively a sentinel value that doesn't change the output of any queries based on its presence or absence.

Instead, this value can be useful in conjunction with android.os.StrictMode.VmPolicy.Builder#detectImplicitDirectBoot() to detect when a caller is relying on implicit automatic matching, instead of confirming the explicit behavior they want, using a combination of these flags:

Value: 268435456

MATCH_DIRECT_BOOT_AWARE

Added in API level 24
static val MATCH_DIRECT_BOOT_AWARE: Int

Querying flag: match components which are direct boot aware in the returned info, regardless of the current user state.

When neither MATCH_DIRECT_BOOT_AWARE nor MATCH_DIRECT_BOOT_UNAWARE are specified, the default behavior is to match only runnable components based on the user state. For example, when a user is started but credentials have not been presented yet, the user is running "locked" and only MATCH_DIRECT_BOOT_AWARE components are returned. Once the user credentials have been presented, the user is running "unlocked" and both MATCH_DIRECT_BOOT_AWARE and MATCH_DIRECT_BOOT_UNAWARE components are returned.

Value: 524288

MATCH_DIRECT_BOOT_UNAWARE

Added in API level 24
static val MATCH_DIRECT_BOOT_UNAWARE: Int

Querying flag: match components which are direct boot unaware in the returned info, regardless of the current user state.

When neither MATCH_DIRECT_BOOT_AWARE nor MATCH_DIRECT_BOOT_UNAWARE are specified, the default behavior is to match only runnable components based on the user state. For example, when a user is started but credentials have not been presented yet, the user is running "locked" and only MATCH_DIRECT_BOOT_AWARE components are returned. Once the user credentials have been presented, the user is running "unlocked" and both MATCH_DIRECT_BOOT_AWARE and MATCH_DIRECT_BOOT_UNAWARE components are returned.

Value: 262144

MATCH_DISABLED_COMPONENTS

Added in API level 24
static val MATCH_DISABLED_COMPONENTS: Int

PackageInfo flag: include disabled components in the returned info.

Value: 512

MATCH_DISABLED_UNTIL_USED_COMPONENTS

Added in API level 24
static val MATCH_DISABLED_UNTIL_USED_COMPONENTS: Int

PackageInfo flag: include disabled components which are in that state only because of 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.

Value: 32768

MATCH_SYSTEM_ONLY

Added in API level 24
static val MATCH_SYSTEM_ONLY: Int

Querying flag: include only components from applications that are marked with ApplicationInfo.FLAG_SYSTEM.

Value: 1048576

MATCH_UNINSTALLED_PACKAGES

Added in API level 24
static val MATCH_UNINSTALLED_PACKAGES: Int

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 DELETE_KEEP_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.

Note: use of this flag requires the android.permission.QUERY_ALL_PACKAGES permission to see uninstalled packages.

Value: 8192

MAXIMUM_VERIFICATION_TIMEOUT

Added in API level 17
static val MAXIMUM_VERIFICATION_TIMEOUT: Long

Can be used as the millisecondsToDelay argument for PackageManager.extendVerificationTimeout. This is the maximum time PackageManager waits for the verification agent to return (in milliseconds).

Value: 3600000L

PERMISSION_DENIED

Added in API level 1
static val PERMISSION_DENIED: Int

Permission check result: this is returned by checkPermission if the permission has not been granted to the given package.

Value: -1

PERMISSION_GRANTED

Added in API level 1
static val PERMISSION_GRANTED: Int

Permission check result: this is returned by checkPermission if the permission has been granted to the given package.

Value: 0

PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT

Added in API level 34
static val PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT: String

Application level PackageManager for an app to inform the system that the app can be opted-in or opted-out from the compatibility treatment that rotates camera output by 90 degrees on landscape sensors on devices known to have compatibility issues.

The treatment is disabled by default but device manufacturers can enable the treatment using their discretion to improve camera compatibility. With this property set to false, the rotation will not be applied. A value of true will ensure that rotation is applied, provided it is enabled for the device. In most cases, if rotation is the desired behavior this property need not be set. However, if your app experiences stretching or incorrect rotation on these devices, explicitly setting this to true may resolve that behavior. Apps should set this to false if there is confidence that the app handles android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION correctly. See the documentation for best practice.

Syntax:

<application>
    <property
      android:name="android.camera.PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT"
      android:value="true|false"/>
  </application>
  
Value: "android.camera.PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT"

PROPERTY_MEDIA_CAPABILITIES

Added in API level 31
static val PROPERTY_MEDIA_CAPABILITIES: String

<application> level android.content.pm.PackageManager.Property tag specifying the XML resource ID containing an application's media capabilities XML file For example: <application> <property android:name="android.media.PROPERTY_MEDIA_CAPABILITIES" android:resource="@xml/media_capabilities"> <application>

Value: "android.media.PROPERTY_MEDIA_CAPABILITIES"

PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES

Added in API level 34
static val PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES: String

<application> level android.content.pm.PackageManager.Property tag specifying the XML resource ID containing the declaration of the self-certified network capabilities used by the application.

Starting from Android 14, usage of some network capabilities in android.net.ConnectivityManager#requestNetwork require the application to declare its usage of that particular capability in this resource. Only some capabilities require a declaration. Please look up the specific capability you want to use in android.net.NetworkCapabilities to see if it needs declaration in this property. For example: <application> <property android:name="android.net.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES" android:resource="@xml/self_certified_network_capabilities"> <application>

The detail format of self_certified_network_capabilities.xml is described in android.net.NetworkRequest

Value: "android.net.PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES"

PROPERTY_SPECIAL_USE_FGS_SUBTYPE

Added in API level 34
static val PROPERTY_SPECIAL_USE_FGS_SUBTYPE: String

<service> level android.content.pm.PackageManager.Property tag specifying the actual use case of the service if it's foreground service with the type ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE.

For example: <service> <property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE" android:value="foo"/> </service>

Value: "android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"

SIGNATURE_FIRST_NOT_SIGNED

Added in API level 1
static val SIGNATURE_FIRST_NOT_SIGNED: Int

Signature check result: this is returned by #checkSignatures if the first package is not signed but the second is.

Value: -1

SIGNATURE_MATCH

Added in API level 1
static val SIGNATURE_MATCH: Int

Signature check result: this is returned by #checkSignatures if all signatures on the two packages match.

Value: 0

SIGNATURE_NEITHER_SIGNED

Added in API level 1
static val SIGNATURE_NEITHER_SIGNED: Int

Signature check result: this is returned by #checkSignatures if neither of the two packages is signed.

Value: 1

SIGNATURE_NO_MATCH

Added in API level 1
static val SIGNATURE_NO_MATCH: Int

Signature check result: this is returned by #checkSignatures if not all signatures on both packages match.

Value: -3

SIGNATURE_SECOND_NOT_SIGNED

Added in API level 1
static val SIGNATURE_SECOND_NOT_SIGNED: Int

Signature check result: this is returned by #checkSignatures if the second package is not signed but the first is.

Value: -2

SIGNATURE_UNKNOWN_PACKAGE

Added in API level 1
static val SIGNATURE_UNKNOWN_PACKAGE: Int

Signature check result: this is returned by #checkSignatures if either of the packages are not valid.

Value: -4

SYNCHRONOUS

Added in API level 30
static val SYNCHRONOUS: Int

Flag parameter for setComponentEnabledSetting(android.content.ComponentName,int,int) to indicate that the given user's package restrictions state will be serialised to disk after the component state has been updated. Note that this is synchronous disk access, so calls using this flag should be run on a background thread.

Value: 2

VERIFICATION_ALLOW

Added in API level 14
static val VERIFICATION_ALLOW: Int

Used as the verificationCode argument for PackageManager.verifyPendingInstall to indicate that the calling package verifier allows the installation to proceed.

Value: 1

VERIFICATION_REJECT

Added in API level 14
static val VERIFICATION_REJECT: Int

Used as the verificationCode argument for PackageManager.verifyPendingInstall to indicate the calling package verifier does not vote to allow the installation to proceed.

Value: -1

VERSION_CODE_HIGHEST

Added in API level 26
static val VERSION_CODE_HIGHEST: Int

Constant for specifying the highest installed package version code.

Value: -1

Public constructors

PackageManager

Added in API level 1
PackageManager()

Deprecated: Do not instantiate or subclass - obtain an instance from Context.getPackageManager

Public methods

addPackageToPreferred

Added in API level 1
Deprecated in API level 15
abstract fun addPackageToPreferred(packageName: String): Unit

Deprecated: This function no longer does anything. It is the platform's responsibility to assign preferred activities and this cannot be modified directly. To determine the activities resolved by the platform, use #resolveActivity or #queryIntentActivities. To configure an app to be responsible for a particular role and to check current role holders, see android.app.role.RoleManager.

Parameters
packageName String: This value cannot be null.

addPermission

Added in API level 1
abstract fun addPermission(info: PermissionInfo): Boolean

Add a new dynamic permission to the system. For this to work, your package must have defined a permission tree through the <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.

Parameters
info PermissionInfo: Description of the permission to be added. This value cannot be null.
Return
Boolean Returns true if a new permission was created, false if an existing one was updated.
Exceptions
java.lang.SecurityException if you are not allowed to add the given permission name.

addPermissionAsync

Added in API level 8
abstract fun addPermissionAsync(info: PermissionInfo): Boolean

Like addPermission(android.content.pm.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.

Parameters
info PermissionInfo: This value cannot be null.

addPreferredActivity

Added in API level 1
Deprecated in API level 15
abstract fun addPreferredActivity(
    filter: IntentFilter,
    match: Int,
    set: Array<ComponentName!>?,
    activity: ComponentName
): Unit

Deprecated: This function no longer does anything. It is the platform's responsibility to assign preferred activities and this cannot be modified directly. To determine the activities resolved by the platform, use #resolveActivity or #queryIntentActivities. To configure an app to be responsible for a particular role and to check current role holders, see android.app.role.RoleManager.

Add a new preferred activity mapping to the system. This will be used to automatically select the given activity component when Context.startActivity() finds multiple matching activities and also matches the given filter.

Parameters
filter IntentFilter: The set of intents under which this activity will be made preferred. This value cannot be null.
match Int: The IntentFilter match category that this preference applies to.
set Array<ComponentName!>?: The set of activities that the user was picking from when this preference was made. This value may be null.
activity ComponentName: The component name of the activity that is to be preferred. This value cannot be null.

addWhitelistedRestrictedPermission

Added in API level 29
open fun addWhitelistedRestrictedPermission(
    packageName: String,
    permName: String,
    whitelistFlags: Int
): Boolean

Adds a whitelisted restricted permission for an app.

Permissions can be hard restricted which means that the app cannot hold them or soft restricted where the app can hold the permission but in a weaker form. Whether a permission is restricted or soft restricted depends on the permission declaration. Whitelisting a hard restricted permission allows for the to hold that permission and whitelisting a soft restricted permission allows the app to hold the permission in its full, unrestricted form.

    There are four whitelists:
  1. one for cases where the system permission policy whitelists a permission This list corresponds to the FLAG_PERMISSION_WHITELIST_SYSTEM flag. Can only be modified by pre-installed holders of a dedicated permission.
  2. one for cases where the system whitelists the permission when upgrading from an OS version in which the permission was not restricted to an OS version in which the permission is restricted. This list corresponds to the FLAG_PERMISSION_WHITELIST_UPGRADE flag. Can be modified by pre-installed holders of a dedicated permission. The installer on record can only remove permissions from this whitelist.
  3. one for cases where the installer of the package whitelists a permission. This list corresponds to the FLAG_PERMISSION_WHITELIST_INSTALLER flag. Can be modified by pre-installed holders of a dedicated permission or the installer on record.

You need to specify the whitelists for which to set the whitelisted permissions which will clear the previous whitelisted permissions and replace them with the provided ones.

Note: In retrospect it would have been preferred to use more inclusive terminology when naming this API. Similar APIs added will refrain from using the term "whitelist".

Parameters
packageName String: The app for which to get whitelisted permissions. This value cannot be null.
permName String: The whitelisted permission to add. This value cannot be null.
whitelistFlags Int: The whitelists to which to add. Passing multiple flags updates all specified whitelists. Value is either 0 or a combination of android.content.pm.PackageManager#FLAG_PERMISSION_WHITELIST_SYSTEM, android.content.pm.PackageManager#FLAG_PERMISSION_WHITELIST_INSTALLER, and android.content.pm.PackageManager#FLAG_PERMISSION_WHITELIST_UPGRADE
Return
Boolean Whether the permission was added to the whitelist.
Exceptions
java.lang.SecurityException if you try to modify a whitelist that you have no access to.

canPackageQuery

Added in API level 33
open fun canPackageQuery(
    sourcePackageName: String,
    targetPackageName: String
): Boolean

Returns true if the source package is able to query for details about the target package. Applications that share details about other applications should use this API to determine if those details should be withheld from callers that do not otherwise have visibility of them.

Note: The caller must be able to query for details about the source and target package. A NameNotFoundException is thrown if it isn't.

Parameters
sourcePackageName String: The source package that would receive details about the target package. This value cannot be null.
targetPackageName String: The target package whose details would be shared with the source package. This value cannot be null.
Return
Boolean true if the source package is able to query for details about the target package.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if either a given package can not be found on the system, or if the caller is not able to query for details about the source or target package.

canPackageQuery

Added in API level 34
open fun canPackageQuery(
    sourcePackageName: String,
    targetPackageNames: Array<String!>
): BooleanArray

Same as canPackageQuery(java.lang.String,java.lang.String) but accepts an array of target packages to be queried.

Parameters
sourcePackageName String: The source package that would receive details about the target package. This value cannot be null.
targetPackageNames Array<String!>: An array of target packages whose details would be shared with the source package. This value cannot be null.
Return
BooleanArray An array of booleans where each member specifies whether the source package is able to query for details about the target package given by the corresponding value at the same index in the array of target packages. This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if either a given package can not be found on the system, or if the caller is not able to query for details about the source or target packages.

canRequestPackageInstalls

Added in API level 26
abstract fun canRequestPackageInstalls(): Boolean

Checks whether the calling package is allowed to request package installs through package installer. Apps are encouraged to call this API before launching the package installer via intent android.content.Intent#ACTION_INSTALL_PACKAGE. Starting from Android O, the user can explicitly choose what external sources they trust to install apps on the device. If this API returns false, the install request will be blocked by the package installer and a dialog will be shown to the user with an option to launch settings to change their preference. An application must target Android O or higher and declare permission android.Manifest.permission#REQUEST_INSTALL_PACKAGES in order to use this API.

Return
Boolean true if the calling package is trusted by the user to request install packages on the device, false otherwise.

canonicalToCurrentPackageNames

Added in API level 8
abstract fun canonicalToCurrentPackageNames(packageNames: Array<String!>): Array<String!>!

Map from a packages canonical name to the current name in use on the device.

Parameters
packageNames Array<String!>: Array of new names to be mapped. This value cannot be null.
Return
Array<String!>! Returns an array of the same size as the original, containing the current name for each package.

checkPermission

Added in API level 1
abstract fun checkPermission(
    permName: String,
    packageName: String
): Int

Check whether a particular package has been granted a particular permission.

Note: This API returns the underlying permission state as-is and is mostly intended for permission managing system apps. To perform an access check for a certain app, please use the Context.checkPermission APIs instead.

Parameters
permName String: The name of the permission you are checking for. This value cannot be null.
packageName String: The name of the package you are checking against. This value cannot be null.
Return
Int If the package has the permission, PERMISSION_GRANTED is returned. If it does not have the permission, PERMISSION_DENIED is returned. Value is android.content.pm.PackageManager#PERMISSION_GRANTED, or android.content.pm.PackageManager#PERMISSION_DENIED

checkSignatures

Added in API level 5
abstract fun checkSignatures(
    uid1: Int,
    uid2: Int
): Int

Like checkSignatures(java.lang.String,java.lang.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.

Parameters
uid1 Int: First UID whose signature will be compared.
uid2 Int: Second UID whose signature will be compared.
Return
Int Returns an integer indicating whether all signatures on the two packages match. The value is >= 0 (SIGNATURE_MATCH) if all signatures match or < 0 if there is not a match (SIGNATURE_NO_MATCH or SIGNATURE_UNKNOWN_PACKAGE). Value is android.content.pm.PackageManager#SIGNATURE_MATCH, android.content.pm.PackageManager#SIGNATURE_NEITHER_SIGNED, android.content.pm.PackageManager#SIGNATURE_FIRST_NOT_SIGNED, android.content.pm.PackageManager#SIGNATURE_SECOND_NOT_SIGNED, android.content.pm.PackageManager#SIGNATURE_NO_MATCH, or android.content.pm.PackageManager#SIGNATURE_UNKNOWN_PACKAGE

checkSignatures

Added in API level 1
abstract fun checkSignatures(
    packageName1: String,
    packageName2: String
): Int

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.

Parameters
packageName1 String: First package name whose signature will be compared. This value cannot be null.
packageName2 String: Second package name whose signature will be compared. This value cannot be null.
Return
Int Returns an integer indicating whether all signatures on the two packages match. The value is >= 0 (SIGNATURE_MATCH) if all signatures match or < 0 if there is not a match (SIGNATURE_NO_MATCH or SIGNATURE_UNKNOWN_PACKAGE). Value is android.content.pm.PackageManager#SIGNATURE_MATCH, android.content.pm.PackageManager#SIGNATURE_NEITHER_SIGNED, android.content.pm.PackageManager#SIGNATURE_FIRST_NOT_SIGNED, android.content.pm.PackageManager#SIGNATURE_SECOND_NOT_SIGNED, android.content.pm.PackageManager#SIGNATURE_NO_MATCH, or android.content.pm.PackageManager#SIGNATURE_UNKNOWN_PACKAGE

clearInstantAppCookie

Added in API level 26
abstract fun clearInstantAppCookie(): Unit

Clears the instant application cookie for the calling app.

clearPackagePreferredActivities

Added in API level 1
Deprecated in API level 29
abstract fun clearPackagePreferredActivities(packageName: String): Unit

Deprecated: This function no longer does anything. It is the platform's responsibility to assign preferred activities and this cannot be modified directly. To determine the activities resolved by the platform, use #resolveActivity or #queryIntentActivities. To configure an app to be responsible for a particular role and to check current role holders, see android.app.role.RoleManager.

Remove all preferred activity mappings, previously added with addPreferredActivity, from the system whose activities are implemented in the given package name. An application can only clear its own package(s).

Parameters
packageName String: The name of the package whose preferred activity mappings are to be removed. This value cannot be null.

currentToCanonicalPackageNames

Added in API level 8
abstract fun currentToCanonicalPackageNames(packageNames: Array<String!>): Array<String!>!

Map from the current package names in use on the device to whatever the current canonical name of that package is.

Parameters
packageNames Array<String!>: Array of current names to be mapped. This value cannot be null.
Return
Array<String!>! Returns an array of the same size as the original, containing the canonical name for each package.

extendVerificationTimeout

Added in API level 17
abstract fun extendVerificationTimeout(
    id: Int,
    verificationCodeAtTimeout: Int,
    millisecondsToDelay: Long
): Unit

Allows a package listening to the broadcast to extend the default timeout for a response and declare what action to perform after the timeout occurs. The response must include the verificationCodeAtTimeout which is one of PackageManager.VERIFICATION_ALLOW or PackageManager.VERIFICATION_REJECT. This method may only be called once per package id. Additional calls will have no effect.

Parameters
id Int: pending package identifier as passed via the PackageManager.EXTRA_VERIFICATION_ID Intent extra.
verificationCodeAtTimeout Int: either PackageManager.VERIFICATION_ALLOW or PackageManager.VERIFICATION_REJECT. If verificationCodeAtTimeout is neither PackageManager.VERIFICATION_ALLOW or PackageManager.VERIFICATION_REJECT, then verificationCodeAtTimeout will default to PackageManager.VERIFICATION_REJECT.
millisecondsToDelay Long: the amount of time requested for the timeout. Must be positive and less than PackageManager.MAXIMUM_VERIFICATION_TIMEOUT. If millisecondsToDelay is out of bounds, millisecondsToDelay will be set to the closest in bounds value; namely, 0 or PackageManager.MAXIMUM_VERIFICATION_TIMEOUT.
Exceptions
java.lang.SecurityException if the caller does not have the PACKAGE_VERIFICATION_AGENT permission.

getActivityBanner

Added in API level 20
abstract fun getActivityBanner(activityName: ComponentName): Drawable?

Retrieve the banner associated with an activity. Given the full name of an activity, retrieves the information about it and calls ComponentInfo.loadIcon() to return its banner. If the activity cannot be found, NameNotFoundException is thrown.

Parameters
activityName ComponentName: Name of the activity whose banner is to be retrieved. This value cannot be null.
Return
Drawable? Returns the image of the banner, or null if the activity has no banner specified.
Exceptions
android.content.pm.PackageManager.NameNotFoundException Thrown if the resources for the given activity could not be loaded.

getActivityBanner

Added in API level 20
abstract fun getActivityBanner(intent: Intent): Drawable?

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.

Parameters
intent Intent: The intent for which you would like to retrieve a banner. This value cannot be null.
Return
Drawable? Returns the image of the banner, or null if the activity has no banner specified.
Exceptions
android.content.pm.PackageManager.NameNotFoundException Thrown if the resources for application matching the given intent could not be loaded.

getActivityIcon

Added in API level 1
abstract fun getActivityIcon(activityName: ComponentName): Drawable

Retrieve the icon associated with an activity. Given the full name of an activity, retrieves the information about it and calls ComponentInfo.loadIcon() to return its icon. If the activity cannot be found, NameNotFoundException is thrown.

Parameters
activityName ComponentName: Name of the activity whose icon is to be retrieved. This value cannot be null.
Return
Drawable Returns the image of the icon, or the default activity icon if it could not be found. Does not return null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException Thrown if the resources for the given activity could not be loaded.

getActivityIcon

Added in API level 1
abstract fun getActivityIcon(intent: Intent): Drawable

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.

Parameters
intent Intent: The intent for which you would like to retrieve an icon. This value cannot be null.
Return
Drawable Returns the image of the icon, or the default activity icon if it could not be found. Does not return null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException Thrown if the resources for application matching the given intent could not be loaded.

getActivityInfo

Added in API level 33
open fun getActivityInfo(
    component: ComponentName,
    flags: PackageManager.ComponentInfoFlags
): ActivityInfo

See getActivityInfo(android.content.ComponentName,int).

Parameters
component ComponentName: This value cannot be null.
flags PackageManager.ComponentInfoFlags: This value cannot be null.
Return
ActivityInfo This value cannot be null.

getActivityInfo

Added in API level 1
abstract fun getActivityInfo(
    component: ComponentName,
    flags: Int
): ActivityInfo

Retrieve all of the information we know about a particular activity class. Use getActivityInfo(android.content.ComponentName,android.content.pm.PackageManager.ComponentInfoFlags) when long flags are needed.

Parameters
component ComponentName: The full component name (i.e. com.google.apps.contacts/com.google.apps.contacts. ContactsList) of an Activity class. This value cannot be null.
flags Int: Additional option flags to modify the data returned.
Return
ActivityInfo An ActivityInfo containing information about the activity. This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if a package with the given name cannot be found on the system.
Added in API level 9
abstract fun getActivityLogo(activityName: ComponentName): Drawable?

Retrieve the logo associated with an activity. Given the full name of an activity, retrieves the information about it and calls ComponentInfo.loadLogo() to return its logo. If the activity cannot be found, NameNotFoundException is thrown.

Parameters
activityName ComponentName: Name of the activity whose logo is to be retrieved. This value cannot be null.
Return
Drawable? Returns the image of the logo or null if the activity has no logo specified.
Exceptions
android.content.pm.PackageManager.NameNotFoundException Thrown if the resources for the given activity could not be loaded.

getActivityLogo

Added in API level 9
abstract fun getActivityLogo(intent: Intent): Drawable?

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.

Parameters
intent Intent: The intent for which you would like to retrieve a logo. This value cannot be null.
Return
Drawable? Returns the image of the logo, or null if the activity has no logo specified.
Exceptions
android.content.pm.PackageManager.NameNotFoundException Thrown if the resources for application matching the given intent could not be loaded.

getAllPermissionGroups

Added in API level 1
abstract fun getAllPermissionGroups(flags: Int): MutableList<PermissionGroupInfo!>

Retrieve all of the known permission groups in the system.

Parameters
flags Int: Additional option flags to modify the data returned. Value is either 0 or android.content.pm.PackageManager#GET_META_DATA
Return
MutableList<PermissionGroupInfo!> Returns a list of PermissionGroupInfo containing information about all of the known permission groups. This value cannot be null.

getApplicationBanner

Added in API level 20
abstract fun getApplicationBanner(info: ApplicationInfo): Drawable?

Retrieve the banner associated with an application.

Parameters
info ApplicationInfo: Information about application being queried. This value cannot be null.
Return
Drawable? Returns the image of the banner or null if the application has no banner specified.

getApplicationBanner

Added in API level 20
abstract fun getApplicationBanner(packageName: String): Drawable?

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.

Parameters
packageName String: Name of the package whose application banner is to be retrieved. This value cannot be null.
Return
Drawable? Returns the image of the banner or null if the application has no banner specified.
Exceptions
android.content.pm.PackageManager.NameNotFoundException Thrown if the resources for the given application could not be loaded.

getApplicationEnabledSetting

Added in API level 1
abstract fun getApplicationEnabledSetting(packageName: String): Int

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

Parameters
packageName String: The package name of the application to retrieve. This value cannot be null.
Return
Int Returns the current enabled state for the application. Value is android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_DEFAULT, android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_ENABLED, android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_DISABLED, android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_DISABLED_USER, or android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED
Exceptions
java.lang.IllegalArgumentException if the named package does not exist.

getApplicationIcon

Added in API level 1
abstract fun getApplicationIcon(info: ApplicationInfo): Drawable

Retrieve the icon associated with an application. If it has not defined an icon, the default app icon is returned. Does not return null.

Parameters
info ApplicationInfo: Information about application being queried. This value cannot be null.
Return
Drawable Returns the image of the icon, or the default application icon if it could not be found.

getApplicationIcon

Added in API level 1
abstract fun getApplicationIcon(packageName: String): Drawable

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.

Parameters
packageName String: Name of the package whose application icon is to be retrieved. This value cannot be null.
Return
Drawable Returns the image of the icon, or the default application icon if it could not be found. Does not return null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException Thrown if the resources for the given application could not be loaded.

getApplicationInfo

Added in API level 33
open fun getApplicationInfo(
    packageName: String,
    flags: PackageManager.ApplicationInfoFlags
): ApplicationInfo

See getApplicationInfo(java.lang.String,int).

Parameters
packageName String: This value cannot be null.
flags PackageManager.ApplicationInfoFlags: This value cannot be null.
Return
ApplicationInfo This value cannot be null.

getApplicationInfo

Added in API level 1
abstract fun getApplicationInfo(
    packageName: String,
    flags: Int
): ApplicationInfo

Retrieve all of the information we know about a particular package/application. Use getApplicationInfo(java.lang.String,android.content.pm.PackageManager.ApplicationInfoFlags) when long flags are needed.

Parameters
packageName String: The full name (i.e. com.google.apps.contacts) of an application. This value cannot be null.
flags Int: Additional option flags to modify the data returned.
Return
ApplicationInfo An ApplicationInfo containing information about the package. If flag MATCH_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 i.e. applications which had been deleted with DELETE_KEEP_DATA flag set). This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if a package with the given name cannot be found on the system.

getApplicationLabel

Added in API level 1
abstract fun getApplicationLabel(info: ApplicationInfo): CharSequence

Return the label to use for this application.

Parameters
info ApplicationInfo: The ApplicationInfo of the application to get the label of. This value cannot be null.
Return
CharSequence Returns a CharSequence containing the label associated with this application, or its name the item does not have a label. This value cannot be null.
Added in API level 9
abstract fun getApplicationLogo(info: ApplicationInfo): Drawable?

Retrieve the logo associated with an application. If it has not specified a logo, this method returns null.

Parameters
info ApplicationInfo: Information about application being queried. This value cannot be null.
Return
Drawable? Returns the image of the logo, or null if no logo is specified by the application.

getApplicationLogo

Added in API level 9
abstract fun getApplicationLogo(packageName: String): Drawable?

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.

Parameters
packageName String: Name of the package whose application logo is to be retrieved. This value cannot be null.
Return
Drawable? Returns the image of the logo, or null if no application logo has been specified.
Exceptions
android.content.pm.PackageManager.NameNotFoundException Thrown if the resources for the given application could not be loaded.

getArchivedPackage

Added in API level 35
open fun getArchivedPackage(packageName: String): ArchivedPackageInfo?

Return archived package info for the package or null if the package is not installed.

Parameters
packageName String: This value cannot be null.

getBackgroundPermissionOptionLabel

Added in API level 30
open fun getBackgroundPermissionOptionLabel(): CharSequence

Gets the localized label that corresponds to the option in settings for granting background access.

The intended use is for apps to reference this label in its instruction for users to grant a background permission.

Return
CharSequence the localized label that corresponds to the settings option for granting background access This value cannot be null.

getChangedPackages

Added in API level 26
abstract fun getChangedPackages(sequenceNumber: Int): ChangedPackages?

Returns the names of the packages that have been changed [eg. added, removed or updated] since the given sequence number.

If no packages have been changed, returns null.

The sequence number starts at 0 and is reset every boot.

Parameters
sequenceNumber Int: The first sequence number for which to retrieve package changes. Value is 0 or greater

getComponentEnabledSetting

Added in API level 1
abstract fun getComponentEnabledSetting(componentName: ComponentName): Int

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

Parameters
componentName ComponentName: The component to retrieve. This value cannot be null.
Return
Int Returns the current enabled state for the component. Value is android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_DEFAULT, android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_ENABLED, android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_DISABLED, android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_DISABLED_USER, or android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED

getDefaultActivityIcon

Added in API level 1
abstract fun getDefaultActivityIcon(): Drawable

Return the generic icon for an activity that is used when no specific icon is defined.

Return
Drawable Drawable Image of the icon. This value cannot be null.

getDrawable

Added in API level 1
abstract fun getDrawable(
    packageName: String,
    resid: Int,
    appInfo: ApplicationInfo?
): Drawable?

Retrieve an image from a package. This is a low-level API used by the various package manager info structures (such as ComponentInfo to implement retrieval of their associated icon.

Parameters
packageName String: The name of the package that this icon is coming from. Cannot be null.
resid Int: The resource identifier of the desired image. Cannot be 0.
appInfo ApplicationInfo?: 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
Drawable? Returns a Drawable holding the requested image. Returns null if an image could not be found for any reason.

getGroupOfPlatformPermission

Added in API level 31
open fun getGroupOfPlatformPermission(
    permissionName: String,
    executor: Executor,
    callback: Consumer<String!>
): Unit

Get the platform-defined permission group of a particular permission, if the permission is a platform-defined permission.

Parameters
permissionName String: the permission whose group is desired This value cannot be null.
executor Executor: the Executor on which to invoke the callback This value cannot be null. Callback and listener events are dispatched through this Executor, providing an easy way to control which thread is used. To dispatch events through the main thread of your application, you can use Context.getMainExecutor(). Otherwise, provide an Executor that dispatches to an appropriate thread.
callback Consumer<String!>: the callback which will receive the name of the permission group this permission belongs to, or null if it has no group, is not a platform-defined permission, or there was an exception

getInstallSourceInfo

Added in API level 30
open fun getInstallSourceInfo(packageName: String): InstallSourceInfo

Retrieves information about how a package was installed or updated.

If the calling application does not hold the INSTALL_PACKAGES permission then the result will always return null from InstallSourceInfo.getOriginatingPackageName().

If the package that requested the install has been uninstalled, then information about it will only be returned from InstallSourceInfo.getInitiatingPackageName() and InstallSourceInfo.getInitiatingPackageSigningInfo() if the calling package is requesting its own install information and is not an instant app.

Parameters
packageName String: The name of the package to query This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if the given package name is not available to the caller.

getInstalledApplications

Added in API level 33
open fun getInstalledApplications(flags: PackageManager.ApplicationInfoFlags): MutableList<ApplicationInfo!>

See getInstalledApplications(int)

Parameters
flags PackageManager.ApplicationInfoFlags: This value cannot be null.
Return
MutableList<ApplicationInfo!> This value cannot be null.

getInstalledApplications

Added in API level 1
abstract fun getInstalledApplications(flags: Int): MutableList<ApplicationInfo!>

Return a List of all application packages that are installed for the current user. If flag GET_UNINSTALLED_PACKAGES has been set, a list of all applications including those deleted with DELETE_KEEP_DATA (partially installed apps with data directory) will be returned. Use getInstalledApplications(android.content.pm.PackageManager.ApplicationInfoFlags) when long flags are needed.

Parameters
flags Int: Additional option flags to modify the data returned.
Return
MutableList<ApplicationInfo!> A List of ApplicationInfo objects, one for each installed application. In the unlikely case there are no installed packages, an empty list is returned. If flag MATCH_UNINSTALLED_PACKAGES is set, the application 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 DELETE_KEEP_DATA flag set). This value cannot be null.

getInstalledModules

Added in API level 29
open fun getInstalledModules(flags: Int): MutableList<ModuleInfo!>

Return a List of all modules that are installed.

Parameters
flags Int: Additional option flags to modify the data returned. Value is either 0 or android.content.pm.PackageManager#MATCH_ALL
Return
MutableList<ModuleInfo!> A List of ModuleInfo objects, one for each installed module, containing information about the module. In the unlikely case there are no installed modules, an empty list is returned. This value cannot be null.

getInstalledPackages

Added in API level 33
open fun getInstalledPackages(flags: PackageManager.PackageInfoFlags): MutableList<PackageInfo!>

See getInstalledPackages(int).

Parameters
flags PackageManager.PackageInfoFlags: This value cannot be null.
Return
MutableList<PackageInfo!> This value cannot be null.

getInstalledPackages

Added in API level 1
abstract fun getInstalledPackages(flags: Int): MutableList<PackageInfo!>

Return a List of all packages that are installed for the current user. Use getInstalledPackages(android.content.pm.PackageManager.PackageInfoFlags) when long flags are needed.

Parameters
flags Int: Additional option flags to modify the data returned.
Return
MutableList<PackageInfo!> A List of PackageInfo objects, one for each installed package, containing information about the package. In the unlikely case there are no installed packages, an empty list is returned. If flag MATCH_UNINSTALLED_PACKAGES is set, 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 DELETE_KEEP_DATA flag set). This value cannot be null.

getInstallerPackageName

Added in API level 5
Deprecated in API level 30
abstract fun getInstallerPackageName(packageName: String): String?

Deprecated: use getInstallSourceInfo(java.lang.String) instead

Retrieve the package name of the application that installed a package. This identifies which market the package came from.

Parameters
packageName String: The name of the package to query This value cannot be null.
Return
String? This value may be null.
Exceptions
java.lang.IllegalArgumentException if the given package name is not installed

getInstantAppCookie

Added in API level 26
abstract fun getInstantAppCookie(): ByteArray

Gets the instant application cookie for this app. Non instant apps and apps that were instant but were upgraded to normal apps can still access this API. For instant apps this cookie is cached for some time after uninstall while for normal apps the cookie is deleted after the app is uninstalled. The cookie is always present while the app is installed.

Return
ByteArray The cookie. This value cannot be null.

getInstantAppCookieMaxBytes

Added in API level 26
abstract fun getInstantAppCookieMaxBytes(): Int

Gets the maximum size in bytes of the cookie data an instant app can store on the device.

Return
Int The max cookie size in bytes.

getInstrumentationInfo

Added in API level 1
abstract fun getInstrumentationInfo(
    className: ComponentName,
    flags: Int
): InstrumentationInfo

Retrieve all of the information we know about a particular instrumentation class.

Parameters
className ComponentName: The full name (i.e. com.google.apps.contacts.InstrumentList) of an Instrumentation class. This value cannot be null.
flags Int: Additional option flags to modify the data returned. Value is either 0 or android.content.pm.PackageManager#GET_META_DATA
Return
InstrumentationInfo An InstrumentationInfo object containing information about the instrumentation. This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if a package with the given name cannot be found on the system.

getLaunchIntentForPackage

Added in API level 3
abstract fun getLaunchIntentForPackage(packageName: String): Intent?

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 Intent.CATEGORY_INFO, and next for a main activity in the category Intent.CATEGORY_LAUNCHER. Returns null if neither are found.

Consider using getLaunchIntentSenderForPackage(java.lang.String) if the caller is not allowed to query for the packageName.

Parameters
packageName String: The name of the package to inspect. This value cannot be null.
Return
Intent? A fully-qualified 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.

getLaunchIntentSenderForPackage

Added in API level 33
open fun getLaunchIntentSenderForPackage(packageName: String): IntentSender

Returns an IntentSender that can be used 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 is the same with getLaunchIntentForPackage(java.lang.String). Instead of returning the Intent, it returns the IntentSender which is not restricted by the package visibility.

The caller can invoke IntentSender.sendIntent(Context, int, Intent, IntentSender.OnFinished, Handler) to launch the activity. An IntentSender.SendIntentException is thrown if the package does not contain such an activity, or if packageName is not recognized.

Parameters
packageName String: The name of the package to inspect. This value cannot be null.
Return
IntentSender Returns a IntentSender to launch the activity. This value cannot be null.

getLeanbackLaunchIntentForPackage

Added in API level 21
abstract fun getLeanbackLaunchIntentForPackage(packageName: String): Intent?

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 Intent.CATEGORY_LEANBACK_LAUNCHER, or return null if no main leanback activities are found.

Parameters
packageName String: The name of the package to inspect. This value cannot be null.
Return
Intent? 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.

getMimeGroup

Added in API level 30
open fun getMimeGroup(mimeGroup: String): MutableSet<String!>

Gets all MIME types contained by MIME group. Libraries should use a reverse-DNS prefix followed by a ':' character and library-specific group name to avoid namespace collisions, e.g. "com.example:myFeature".

Parameters
mimeGroup String: MIME group to retrieve. This value cannot be null.
Return
MutableSet<String!> MIME types contained by the MIME group. This value cannot be null.
Exceptions
java.lang.IllegalArgumentException if the MIME group was not declared in the manifest.

getModuleInfo

Added in API level 29
open fun getModuleInfo(
    packageName: String,
    flags: Int
): ModuleInfo

Retrieve information for a particular module.

Parameters
packageName String: The name of the module. This value cannot be null.
flags Int: Additional option flags to modify the data returned. Value is either 0 or android.content.pm.PackageManager.MODULE_APEX_NAME
Return
ModuleInfo A ModuleInfo object containing information about the module. This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if a module with the given name cannot be found on the system.

getNameForUid

Added in API level 1
abstract fun getNameForUid(uid: Int): String?

Retrieve the official name associated with a uid. This name is guaranteed to never change, though it is possible for the underlying uid to be changed. That is, if you are storing information about uids in persistent storage, you should use the string returned by this function instead of the raw uid.

Parameters
uid Int: The uid for which you would like to retrieve a name.
Return
String? Returns a unique name for the given uid, or null if the uid is not currently assigned.

getPackageArchiveInfo

Added in API level 33
open fun getPackageArchiveInfo(
    archiveFilePath: String,
    flags: PackageManager.PackageInfoFlags
): PackageInfo?

See getPackageArchiveInfo(java.lang.String,int).

Parameters
archiveFilePath String: This value cannot be null.
flags PackageManager.PackageInfoFlags: This value cannot be null.
Return
PackageInfo? This value may be null.

getPackageArchiveInfo

Added in API level 1
open fun getPackageArchiveInfo(
    archiveFilePath: String,
    flags: Int
): PackageInfo?

Retrieve overall information about an application package defined in a package archive file Use getPackageArchiveInfo(java.lang.String,android.content.pm.PackageManager.PackageInfoFlags) when long flags are needed.

Parameters
archiveFilePath String: The path to the archive file This value cannot be null.
flags Int: Additional option flags to modify the data returned.
Return
PackageInfo? A PackageInfo object containing information about the package archive. If the package could not be parsed, returns null.

getPackageGids

Added in API level 1
abstract fun getPackageGids(packageName: String): IntArray!

Return an array of all of the POSIX secondary group IDs that have been assigned to the given package.

Note that the same package may have different GIDs under different UserHandle on the same device.

Parameters
packageName String: The full name (i.e. com.google.apps.contacts) of the desired package. This value cannot be null.
Return
IntArray! Returns an int array of the assigned GIDs, or null if there are none.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if no such package is available to the caller.

getPackageGids

Added in API level 33
open fun getPackageGids(
    packageName: String,
    flags: PackageManager.PackageInfoFlags
): IntArray?

See getPackageGids(java.lang.String,int).

Parameters
packageName String: This value cannot be null.
flags PackageManager.PackageInfoFlags: This value cannot be null.
Return
IntArray? This value may be null.

getPackageGids

Added in API level 24
abstract fun getPackageGids(
    packageName: String,
    flags: Int
): IntArray!

Return an array of all of the POSIX secondary group IDs that have been assigned to the given package.

Note that the same package may have different GIDs under different UserHandle on the same device. Use getPackageGids(java.lang.String,android.content.pm.PackageManager.PackageInfoFlags) when long flags are needed.

Parameters
packageName String: The full name (i.e. com.google.apps.contacts) of the desired package. This value cannot be null.
Return
IntArray! Returns an int array of the assigned gids, or null if there are none.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if no such package is available to the caller.

getPackageInfo

Added in API level 33
open fun getPackageInfo(
    versionedPackage: VersionedPackage,
    flags: PackageManager.PackageInfoFlags
): PackageInfo

See getPackageInfo(android.content.pm.VersionedPackage,int)

Parameters
versionedPackage VersionedPackage: This value cannot be null.
flags PackageManager.PackageInfoFlags: This value cannot be null.
Return
PackageInfo This value cannot be null.

getPackageInfo

Added in API level 26
abstract fun getPackageInfo(
    versionedPackage: VersionedPackage,
    flags: Int
): PackageInfo!

Retrieve overall information about an application package that is installed on the system. This method can be used for retrieving information about packages for which multiple versions can be installed at the time. Currently only packages hosting static shared libraries can have multiple installed versions. The method can also be used to get info for a package that has a single version installed by passing VERSION_CODE_HIGHEST in the VersionedPackage constructor. Use getPackageInfo(android.content.pm.VersionedPackage,android.content.pm.PackageManager.PackageInfoFlags) when long flags are needed.

Parameters
versionedPackage VersionedPackage: The versioned package for which to query. This value cannot be null.
flags Int: Additional option flags to modify the data returned.
Return
PackageInfo! A PackageInfo object containing information about the package. If flag MATCH_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 DELETE_KEEP_DATA flag set).
Exceptions
android.content.pm.PackageManager.NameNotFoundException if no such package is available to the caller.

getPackageInfo

Added in API level 33
open fun getPackageInfo(
    packageName: String,
    flags: PackageManager.PackageInfoFlags
): PackageInfo

See getPackageInfo(java.lang.String,int)

Parameters
packageName String: This value cannot be null.
flags PackageManager.PackageInfoFlags: This value cannot be null.
Return
PackageInfo This value cannot be null.

getPackageInfo

Added in API level 1
abstract fun getPackageInfo(
    packageName: String,
    flags: Int
): PackageInfo!

Retrieve overall information about an application package that is installed on the system. Use getPackageInfo(java.lang.String,android.content.pm.PackageManager.PackageInfoFlags) when long flags are needed.

Parameters
packageName String: The full name (i.e. com.google.apps.contacts) of the desired package. This value cannot be null.
flags Int: Additional option flags to modify the data returned.
Return
PackageInfo! A PackageInfo object containing information about the package. If flag MATCH_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 DELETE_KEEP_DATA flag set).
Exceptions
android.content.pm.PackageManager.NameNotFoundException if no such package is available to the caller.

getPackageInstaller

Added in API level 21
abstract fun getPackageInstaller(): PackageInstaller

Return interface that offers the ability to install, upgrade, and remove applications on the device.

Return
PackageInstaller This value cannot be null.

getPackageUid

Added in API level 33
open fun getPackageUid(
    packageName: String,
    flags: PackageManager.PackageInfoFlags
): Int

See getPackageUid(java.lang.String,int).

Parameters
packageName String: This value cannot be null.
flags PackageManager.PackageInfoFlags: This value cannot be null.

getPackageUid

Added in API level 24
abstract fun getPackageUid(
    packageName: String,
    flags: Int
): Int

Return the UID associated with the given package name.

Note that the same package will have different UIDs under different UserHandle on the same device. Use getPackageUid(java.lang.String,android.content.pm.PackageManager.PackageInfoFlags) when long flags are needed.

Parameters
packageName String: The full name (i.e. com.google.apps.contacts) of the desired package. This value cannot be null.
Return
Int Returns an integer UID who owns the given package name.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if no such package is available to the caller.

getPackagesForUid

Added in API level 1
abstract fun getPackagesForUid(uid: Int): Array<String!>?

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.

Parameters
uid Int: The user id for which you would like to retrieve the associated packages.
Return
Array<String!>? 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.

getPackagesHoldingPermissions

Added in API level 33
open fun getPackagesHoldingPermissions(
    permissions: Array<String!>,
    flags: PackageManager.PackageInfoFlags
): MutableList<PackageInfo!>

See getPackagesHoldingPermissions(java.lang.String[],int).

Parameters
permissions Array<String!>: This value cannot be null.
flags PackageManager.PackageInfoFlags: This value cannot be null.
Return
MutableList<PackageInfo!> This value cannot be null.

getPackagesHoldingPermissions

Added in API level 18
abstract fun getPackagesHoldingPermissions(
    permissions: Array<String!>,
    flags: Int
): MutableList<PackageInfo!>

Return a List of all installed packages that are currently holding any of the given permissions. Use getPackagesHoldingPermissions(java.lang.String[],android.content.pm.PackageManager.PackageInfoFlags) when long flags are needed.

Parameters
flags Int: Additional option flags to modify the data returned.
permissions Array<String!>: This value cannot be null.
Return
MutableList<PackageInfo!> A List of PackageInfo objects, one for each installed package that holds any of the permissions that were provided, containing information about the package. If no installed packages hold any of the permissions, an empty list is returned. If flag MATCH_UNINSTALLED_PACKAGES is set, 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 DELETE_KEEP_DATA flag set). This value cannot be null.

getPermissionGroupInfo

Added in API level 1
abstract fun getPermissionGroupInfo(
    groupName: String,
    flags: Int
): PermissionGroupInfo

Retrieve all of the information we know about a particular group of permissions.

Parameters
groupName String: The fully qualified name (i.e. com.google.permission_group.APPS) of the permission you are interested in. This value cannot be null.
flags Int: Additional option flags to modify the data returned. Value is either 0 or android.content.pm.PackageManager#GET_META_DATA
Return
PermissionGroupInfo Returns a PermissionGroupInfo containing information about the permission. This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if a package with the given name cannot be found on the system.

getPermissionInfo

Added in API level 1
abstract fun getPermissionInfo(
    permName: String,
    flags: Int
): PermissionInfo!

Retrieve all of the information we know about a particular permission.

Parameters
permName String: The fully qualified name (i.e. com.google.permission.LOGIN) of the permission you are interested in. This value cannot be null.
flags Int: Additional option flags to modify the data returned. Value is either 0 or android.content.pm.PackageManager#GET_META_DATA
Return
PermissionInfo! Returns a PermissionInfo containing information about the permission.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if a package with the given name cannot be found on the system.

getPlatformPermissionsForGroup

Added in API level 31
open fun getPlatformPermissionsForGroup(
    permissionGroupName: String,
    executor: Executor,
    callback: Consumer<MutableList<String!>!>
): Unit

Get the platform-defined permissions which belong to a particular permission group.

Parameters
permissionGroupName String: the permission group whose permissions are desired This value cannot be null.
executor Executor: the Executor on which to invoke the callback This value cannot be null. Callback and listener events are dispatched through this Executor, providing an easy way to control which thread is used. To dispatch events through the main thread of your application, you can use Context.getMainExecutor(). Otherwise, provide an Executor that dispatches to an appropriate thread.
callback Consumer<MutableList<String!>!>: the callback which will receive a list of the platform-defined permissions in the group, or empty if the group is not a valid platform-defined permission group, or there was an exception This value cannot be null.

getPreferredActivities

Added in API level 1
Deprecated in API level 29
abstract fun getPreferredActivities(
    outFilters: MutableList<IntentFilter!>,
    outActivities: MutableList<ComponentName!>,
    packageName: String?
): Int

Deprecated: This function no longer does anything. It is the platform's responsibility to assign preferred activities and this cannot be modified directly. To determine the activities resolved by the platform, use #resolveActivity or #queryIntentActivities. To configure an app to be responsible for a particular role and to check current role holders, see android.app.role.RoleManager.

Retrieve all preferred activities, previously added with addPreferredActivity, that are currently registered with the system.

Parameters
outFilters MutableList<IntentFilter!>: A required list in which to place the filters of all of the preferred activities. This value cannot be null.
outActivities MutableList<ComponentName!>: A required list in which to place the component names of all of the preferred activities. This value cannot be null.
packageName String?: An optional 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
Int Returns the total number of registered preferred activities (the number of distinct IntentFilter records, not the number of unique activity components) that were found.

getPreferredPackages

Added in API level 1
Deprecated in API level 29
abstract fun getPreferredPackages(flags: Int): MutableList<PackageInfo!>

Deprecated: This function no longer does anything. It is the platform's responsibility to assign preferred activities and this cannot be modified directly. To determine the activities resolved by the platform, use #resolveActivity or #queryIntentActivities. To configure an app to be responsible for a particular role and to check current role holders, see android.app.role.RoleManager.

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.

Parameters
flags Int: Additional option flags to modify the data returned.
Return
MutableList<PackageInfo!> A List of PackageInfo objects, one for each preferred application, in order of preference. This value cannot be null.

getProperty

Added in API level 31
open fun getProperty(
    propertyName: String,
    component: ComponentName
): PackageManager.Property

Returns the property defined in the given component declaration.

Parameters
propertyName String: This value cannot be null.
component ComponentName: This value cannot be null.
Return
PackageManager.Property This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if either the given component does not exist or if the given property is not defined within the component declaration.

getProperty

Added in API level 31
open fun getProperty(
    propertyName: String,
    packageName: String
): PackageManager.Property

Returns the property defined in the given package's <application> tag.

Parameters
propertyName String: This value cannot be null.
packageName String: This value cannot be null.
Return
PackageManager.Property This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if either the given package is not installed or if the given property is not defined within the <application> tag.

getProviderInfo

Added in API level 33
open fun getProviderInfo(
    component: ComponentName,
    flags: PackageManager.ComponentInfoFlags
): ProviderInfo

See getProviderInfo(android.content.ComponentName,int).

Parameters
component ComponentName: This value cannot be null.
flags PackageManager.ComponentInfoFlags: This value cannot be null.
Return
ProviderInfo This value cannot be null.

getProviderInfo

Added in API level 9
abstract fun getProviderInfo(
    component: ComponentName,
    flags: Int
): ProviderInfo

Retrieve all of the information we know about a particular content provider class. Use getProviderInfo(android.content.ComponentName,android.content.pm.PackageManager.ComponentInfoFlags) when long flags are needed.

Parameters
component ComponentName: The full component name (i.e. com.google.providers.media/com.google.providers.media. MediaProvider) of a ContentProvider class. This value cannot be null.
flags Int: Additional option flags to modify the data returned.
Return
ProviderInfo A ProviderInfo object containing information about the provider. This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if a package with the given name cannot be found on the system.

getReceiverInfo

Added in API level 33
open fun getReceiverInfo(
    component: ComponentName,
    flags: PackageManager.ComponentInfoFlags
): ActivityInfo

See getReceiverInfo(android.content.ComponentName,int).

Parameters
component ComponentName: This value cannot be null.
flags PackageManager.ComponentInfoFlags: This value cannot be null.
Return
ActivityInfo This value cannot be null.

getReceiverInfo

Added in API level 1
abstract fun getReceiverInfo(
    component: ComponentName,
    flags: Int
): ActivityInfo

Retrieve all of the information we know about a particular receiver class. Use getReceiverInfo(android.content.ComponentName,android.content.pm.PackageManager.ComponentInfoFlags) when long flags are needed.

Parameters
component ComponentName: The full component name (i.e. com.google.apps.calendar/com.google.apps.calendar. CalendarAlarm) of a Receiver class. This value cannot be null.
flags Int: Additional option flags to modify the data returned.
Return
ActivityInfo An ActivityInfo containing information about the receiver. This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if a package with the given name cannot be found on the system.

getResourcesForActivity

Added in API level 1
abstract fun getResourcesForActivity(activityName: ComponentName): Resources

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.

Parameters
activityName ComponentName: Name of the activity whose resources are to be retrieved. This value cannot be null.
Return
Resources Returns the application's Resources. This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException Thrown if the resources for the given application could not be loaded.

getResourcesForApplication

Added in API level 1
abstract fun getResourcesForApplication(app: ApplicationInfo): Resources

Retrieve the resources for an application. Throws NameNotFoundException if the package is no longer installed.

Parameters
app ApplicationInfo: Information about the desired application. This value cannot be null.
Return
Resources Returns the application's Resources. This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException Thrown if the resources for the given application could not be loaded (most likely because it was uninstalled).

getResourcesForApplication

Added in API level 31
open fun getResourcesForApplication(
    app: ApplicationInfo,
    configuration: Configuration?
): Resources

Retrieve the resources for an application for the provided configuration.

Parameters
app ApplicationInfo: Information about the desired application. This value cannot be null.
configuration Configuration?: Overridden configuration when loading the Resources This value may be null.
Return
Resources Returns the application's Resources. This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException Thrown if the resources for the given application could not be loaded (most likely because it was uninstalled).

getResourcesForApplication

Added in API level 1
abstract fun getResourcesForApplication(packageName: String): Resources

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.

Parameters
packageName String: Package name of the application whose resources are to be retrieved. This value cannot be null.
Return
Resources Returns the application's Resources. This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException Thrown if the resources for the given application could not be loaded.

getServiceInfo

Added in API level 33
open fun getServiceInfo(
    component: ComponentName,
    flags: PackageManager.ComponentInfoFlags
): ServiceInfo

See getServiceInfo(android.content.ComponentName,int).

Parameters
component ComponentName: This value cannot be null.
flags PackageManager.ComponentInfoFlags: This value cannot be null.
Return
ServiceInfo This value cannot be null.

getServiceInfo

Added in API level 1
abstract fun getServiceInfo(
    component: ComponentName,
    flags: Int
): ServiceInfo

Retrieve all of the information we know about a particular service class. Use getServiceInfo(android.content.ComponentName,android.content.pm.PackageManager.ComponentInfoFlags) when long flags are needed.

Parameters
component ComponentName: The full component name (i.e. com.google.apps.media/com.google.apps.media. BackgroundPlayback) of a Service class. This value cannot be null.
flags Int: Additional option flags to modify the data returned.
Return
ServiceInfo A ServiceInfo object containing information about the service. This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if the component cannot be found on the system.

getSharedLibraries

Added in API level 33
open fun getSharedLibraries(flags: PackageManager.PackageInfoFlags): MutableList<SharedLibraryInfo!>

See getSharedLibraries(int).

Parameters
flags PackageManager.PackageInfoFlags: This value cannot be null.
Return
MutableList<SharedLibraryInfo!> This value cannot be null.

getSharedLibraries

Added in API level 26
abstract fun getSharedLibraries(flags: Int): MutableList<SharedLibraryInfo!>

Get a list of shared libraries on the device. Use getSharedLibraries(android.content.pm.PackageManager.PackageInfoFlags) when long flags are needed.

Parameters
flags Int: To filter the libraries to return.
Return
MutableList<SharedLibraryInfo!> The shared library list. This value cannot be null.

getSuspendedPackageAppExtras

Added in API level 28
open fun getSuspendedPackageAppExtras(): Bundle?

Returns a Bundle of extras that was meant to be sent to the calling app when it was suspended. An app with the permission android.permission.SUSPEND_APPS can supply this to the system at the time of suspending an app.

This is the same Bundle that is sent along with the broadcast Intent.ACTION_MY_PACKAGE_SUSPENDED, whenever the app is suspended. The contents of this Bundle are a contract between the suspended app and the suspending app.

Note: These extras are optional, so if no extras were supplied to the system, this method will return null, even when the calling app has been suspended.

Return
Bundle? A Bundle containing the extras for the app, or null if the package is not currently suspended.

getSyntheticAppDetailsActivityEnabled

Added in API level 29
open fun getSyntheticAppDetailsActivityEnabled(packageName: String): Boolean

Return whether a synthetic app details activity will be generated if the app has no enabled launcher activity.

Parameters
packageName String: The package name of the app This value cannot be null.
Return
Boolean Returns the enabled state for the synthetic app details activity.

getSystemAvailableFeatures

Added in API level 5
abstract fun getSystemAvailableFeatures(): Array<FeatureInfo!>

Get a list of features that are available on the system.

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

getSystemSharedLibraryNames

Added in API level 3
abstract fun getSystemSharedLibraryNames(): Array<String!>?

Get a list of shared libraries that are available on the system.

Return
Array<String!>? An array of shared library names that are available on the system, or null if none are installed.

getTargetSdkVersion

Added in API level 31
open fun getTargetSdkVersion(packageName: String): Int
Parameters
packageName String: This value cannot be null.
Return
Int The target SDK version for the given package name. Value is 0 or greater
Exceptions
android.content.pm.PackageManager.NameNotFoundException if a package with the given name cannot be found on the system.

getText

Added in API level 1
abstract fun getText(
    packageName: String,
    resid: Int,
    appInfo: ApplicationInfo?
): CharSequence?

Retrieve text from a package. This is a low-level API used by the various package manager info structures (such as ComponentInfo to implement retrieval of their associated labels and other text.

Parameters
packageName String: The name of the package that this text is coming from. Cannot be null.
resid Int: The resource identifier of the desired text. Cannot be 0.
appInfo ApplicationInfo?: 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
CharSequence? Returns a CharSequence holding the requested text. Returns null if the text could not be found for any reason.

getUserBadgedDrawableForDensity

Added in API level 21
abstract fun getUserBadgedDrawableForDensity(
    drawable: Drawable,
    user: UserHandle,
    badgeLocation: Rect?,
    badgeDensity: Int
): Drawable

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 android.graphics.Bitmap#isMutable(), the badging is performed in place and the original drawable is returned.

Parameters
drawable Drawable: The drawable to badge. This value cannot be null.
user UserHandle: The target user. This value cannot be null.
badgeLocation Rect?: Where in the bounds of the badged drawable to place the badge. If it's null, the badge is applied on top of the entire drawable being badged.
badgeDensity Int: The optional desired density for the badge as per android.util.DisplayMetrics#densityDpi. If it's not positive, the density of the display is used.
Return
Drawable A drawable that combines the original drawable and a badge as determined by the system. This value cannot be null.

getUserBadgedIcon

Added in API level 21
abstract fun getUserBadgedIcon(
    drawable: Drawable,
    user: UserHandle
): Drawable

If the target user is 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 getUserBadgedDrawableForDensity(android.graphics.drawable.Drawable,android.os.UserHandle,android.graphics.Rect,int).

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

Parameters
drawable Drawable: The drawable to badge. This value cannot be null.
user UserHandle: The target user. This value cannot be null.
Return
Drawable A drawable that combines the original icon and a badge as determined by the system. This value cannot be null.

getUserBadgedLabel

Added in API level 21
abstract fun getUserBadgedLabel(
    label: CharSequence,
    user: UserHandle
): CharSequence

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.

Parameters
label CharSequence: The label to change. This value cannot be null.
user UserHandle: The target user. This value cannot be null.
Return
CharSequence A label that combines the original label and a badge as determined by the system. This value cannot be null.

getWhitelistedRestrictedPermissions

Added in API level 29
open fun getWhitelistedRestrictedPermissions(
    packageName: String,
    whitelistFlag: Int
): MutableSet<String!>

Gets the restricted permissions that have been whitelisted and the app is allowed to have them granted in their full form.

Permissions can be hard restricted which means that the app cannot hold them or soft restricted where the app can hold the permission but in a weaker form. Whether a permission is restricted or soft restricted depends on the permission declaration. Whitelisting a hard restricted permission allows for the to hold that permission and whitelisting a soft restricted permission allows the app to hold the permission in its full, unrestricted form.

    There are four allowlists:
  1. one for cases where the system permission policy whitelists a permission This list corresponds to theFLAG_PERMISSION_WHITELIST_SYSTEM flag. Can only be accessed by pre-installed holders of a dedicated permission.
  2. one for cases where the system whitelists the permission when upgrading from an OS version in which the permission was not restricted to an OS version in which the permission is restricted. This list corresponds to the FLAG_PERMISSION_WHITELIST_UPGRADE flag. Can be accessed by pre-installed holders of a dedicated permission or the installer on record.
  3. one for cases where the installer of the package whitelists a permission. This list corresponds to the FLAG_PERMISSION_WHITELIST_INSTALLER flag. Can be accessed by pre-installed holders of a dedicated permission or the installer on record.

Note: In retrospect it would have been preferred to use more inclusive terminology when naming this API. Similar APIs added will refrain from using the term "whitelist".

Parameters
packageName String: The app for which to get whitelisted permissions. This value cannot be null.
whitelistFlag Int: The flag to determine which whitelist to query. Only one flag can be passed.s Value is either 0 or a combination of android.content.pm.PackageManager#FLAG_PERMISSION_WHITELIST_SYSTEM, android.content.pm.PackageManager#FLAG_PERMISSION_WHITELIST_INSTALLER, and android.content.pm.PackageManager#FLAG_PERMISSION_WHITELIST_UPGRADE
Return
MutableSet<String!> The whitelisted permissions that are on any of the whitelists you query for. This value cannot be null.
Exceptions
java.lang.SecurityException if you try to access a whitelist that you have no access to.

getXml

Added in API level 1
abstract fun getXml(
    packageName: String,
    resid: Int,
    appInfo: ApplicationInfo?
): XmlResourceParser?

Retrieve an XML file from a package. This is a low-level API used to retrieve XML meta data.

Parameters
packageName String: The name of the package that this xml is coming from. Cannot be null.
resid Int: The resource identifier of the desired xml. Cannot be 0.
appInfo ApplicationInfo?: 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
XmlResourceParser? Returns an XmlPullParser allowing you to parse out the XML data. Returns null if the xml resource could not be found for any reason.

hasSigningCertificate

Added in API level 28
open fun hasSigningCertificate(
    uid: Int,
    certificate: ByteArray,
    type: Int
): Boolean

Searches the set of signing certificates by which the package(s) for the given uid has proven to have been signed. For multiple packages sharing the same uid, this will return the signing certificates found in the signing history of the "newest" package, where "newest" indicates the package with the newest signing certificate in the shared uid group. This method should be used instead of getPackageInfo with GET_SIGNATURES since it takes into account the possibility of signing certificate rotation, except in the case of packages that are signed by multiple certificates, for which signing certificate rotation is not supported. This method is analogous to using getPackagesForUid followed by getPackageInfo with GET_SIGNING_CERTIFICATES, selecting the PackageInfo of the newest-signed bpackage , and finally searching through the resulting signingInfo field to see if the desired certificate is there.

Parameters
uid Int: uid whose signing certificates to check
certificate ByteArray: signing certificate for which to search This value cannot be null.
type Int: representation of the certificate Value is android.content.pm.PackageManager#CERT_INPUT_RAW_X509, or android.content.pm.PackageManager#CERT_INPUT_SHA256
Return
Boolean true if this package was or is signed by exactly the certificate certificate

hasSigningCertificate

Added in API level 28
open fun hasSigningCertificate(
    packageName: String,
    certificate: ByteArray,
    type: Int
): Boolean

Searches the set of signing certificates by which the given package has proven to have been signed. This should be used instead of getPackageInfo with GET_SIGNATURES since it takes into account the possibility of signing certificate rotation, except in the case of packages that are signed by multiple certificates, for which signing certificate rotation is not supported. This method is analogous to using getPackageInfo with GET_SIGNING_CERTIFICATES and then searching through the resulting signingInfo field to see if the desired certificate is present.

Parameters
packageName String: package whose signing certificates to check This value cannot be null.
certificate ByteArray: signing certificate for which to search This value cannot be null.
type Int: representation of the certificate Value is android.content.pm.PackageManager#CERT_INPUT_RAW_X509, or android.content.pm.PackageManager#CERT_INPUT_SHA256
Return
Boolean true if this package was or is signed by exactly the certificate certificate

hasSystemFeature

Added in API level 5
abstract fun hasSystemFeature(featureName: String): Boolean

Check whether the given feature name is one of the available features as returned by getSystemAvailableFeatures(). This tests for the presence of any version of the given feature name; use hasSystemFeature(java.lang.String,int) to check for a minimum version.

Parameters
featureName String: This value cannot be null.
Return
Boolean Returns true if the devices supports the feature, else false.

hasSystemFeature

Added in API level 24
abstract fun hasSystemFeature(
    featureName: String,
    version: Int
): Boolean

Check whether the given feature name and version is one of the available features as returned by getSystemAvailableFeatures(). Since features are defined to always be backwards compatible, this returns true if the available feature version is greater than or equal to the requested version.

Parameters
featureName String: This value cannot be null.
Return
Boolean Returns true if the devices supports the feature, else false.

isAppArchivable

Added in API level 35
open fun isAppArchivable(packageName: String): Boolean

Returns true if an app is archivable.

Parameters
packageName String: This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if the given package name is not available to the caller.

isAutoRevokeWhitelisted

Added in API level 30
open fun isAutoRevokeWhitelisted(): Boolean

Note: In retrospect it would have been preferred to use more inclusive terminology when naming this API. Similar APIs added will refrain from using the term "whitelist".

Return
Boolean whether this package is whitelisted from having its runtime permission be auto-revoked if unused for an extended period of time.

isAutoRevokeWhitelisted

Added in API level 30
open fun isAutoRevokeWhitelisted(packageName: String): Boolean

Checks whether an application is exempt from having its permissions be automatically revoked when the app is unused for an extended period of time. Only the installer on record that installed the given package, or a holder of WHITELIST_AUTO_REVOKE_PERMISSIONS is allowed to call this.

Note: In retrospect it would have been preferred to use more inclusive terminology when naming this API. Similar APIs added will refrain from using the term "whitelist".

Parameters
packageName String: The app for which to set exemption. This value cannot be null.
Return
Boolean Whether the app is whitelisted.
Exceptions
java.lang.SecurityException if you you have no access to this.

isDefaultApplicationIcon

Added in API level 30
open fun isDefaultApplicationIcon(drawable: Drawable): Boolean

Returns if the provided drawable represents the default activity icon provided by the system. PackageManager silently returns a default application icon for any package/activity if the app itself does not define one or if the system encountered any error when loading the icon. Developers can use this to check implement app specific logic around retrying or caching.

Parameters
drawable Drawable: This value cannot be null.
Return
Boolean true if the drawable represents the default activity icon, false otherwise

isDeviceUpgrading

Added in API level 29
open fun isDeviceUpgrading(): Boolean

Returns true if the device is upgrading, such as first boot after OTA.

isInstantApp

Added in API level 26
abstract fun isInstantApp(): Boolean

Gets whether this application is an instant app.

Return
Boolean Whether caller is an instant app.

isInstantApp

Added in API level 26
abstract fun isInstantApp(packageName: String): Boolean

Gets whether the given package is an instant app.

Parameters
packageName String: The package to check This value cannot be null.
Return
Boolean Whether the given package is an instant app.

isPackageStopped

Added in API level 35
open fun isPackageStopped(packageName: String): Boolean

Query if an app is currently stopped.

Parameters
packageName String: This value cannot be null.
Return
Boolean true if the given package is stopped, false otherwise
Exceptions
android.content.pm.PackageManager.NameNotFoundException if the package could not be found.

isPackageSuspended

Added in API level 28
open fun isPackageSuspended(): Boolean

Apps can query this to know if they have been suspended. A system app with the permission android.permission.SUSPEND_APPS can put any app on the device into a suspended state.

While in this state, the application's notifications will be hidden, any of its started activities will be stopped and it will not be able to show toasts or dialogs or play audio. When the user tries to launch a suspended app, the system will, instead, show a dialog to the user informing them that they cannot use this app while it is suspended.

When an app is put into this state, the broadcast action Intent.ACTION_MY_PACKAGE_SUSPENDED will be delivered to any of its broadcast receivers that included this action in their intent-filters, including manifest receivers. Similarly, a broadcast action Intent.ACTION_MY_PACKAGE_UNSUSPENDED is delivered when a previously suspended app is taken out of this state. Apps are expected to use these to gracefully deal with transitions to and from this state.

Return
Boolean true if the calling package has been suspended, false otherwise.

isPackageSuspended

Added in API level 29
open fun isPackageSuspended(packageName: String): Boolean

Query if an app is currently suspended.

Parameters
packageName String: This value cannot be null.
Return
Boolean true if the given package is suspended, false otherwise
Exceptions
android.content.pm.PackageManager.NameNotFoundException if the package could not be found.

isPermissionRevokedByPolicy

Added in API level 23
abstract fun isPermissionRevokedByPolicy(
    permName: String,
    packageName: String
): Boolean

Checks whether a particular permissions has been revoked for a package by policy. Typically the device owner or the profile owner may apply such a policy. The user cannot grant policy revoked permissions, hence the only way for an app to get such a permission is by a policy change.

Parameters
permName String: The name of the permission you are checking for. This value cannot be null.
packageName String: The name of the package you are checking against. This value cannot be null.
Return
Boolean Whether the permission is restricted by policy.

isSafeMode

Added in API level 3
abstract fun isSafeMode(): Boolean

Return whether the device has been booted into safe mode.

parseAndroidManifest

open fun <T : Any!> parseAndroidManifest(
    apkFileDescriptor: ParcelFileDescriptor,
    parserFunction: Function<XmlResourceParser!, T>
): T

Similar to parseAndroidManifest(java.io.File,java.util.function.Function), but accepting a file descriptor instead of a File object.
This method may take several seconds to complete, so it should only be called from a worker thread.

Parameters
apkFileDescriptor ParcelFileDescriptor: The file descriptor of an application apk. The parserFunction will be invoked with the XmlResourceParser object after getting the AndroidManifest.xml of an application package. This value cannot be null.
parserFunction Function<XmlResourceParser!, T>: This value cannot be null.
Return
T Returns the result of the Function.apply(Object).
Exceptions
java.io.IOException if the AndroidManifest.xml of an application package cannot be read or accessed.

parseAndroidManifest

Added in API level 35
open fun <T : Any!> parseAndroidManifest(
    apkFile: File,
    parserFunction: Function<XmlResourceParser!, T>
): T

Retrieve AndroidManifest.xml information for the given application apk file.

Example:

<code>
  Bundle result;
  try {
      result = getContext().getPackageManager().parseAndroidManifest(apkFile,
              xmlResourceParser -&gt; {
                  Bundle bundle = new Bundle();
                  // Search the start tag
                  int type;
                  while ((type = xmlResourceParser.next()) != XmlPullParser.START_TAG
                          &amp;&amp; type != XmlPullParser.END_DOCUMENT) {
                  }
                  if (type != XmlPullParser.START_TAG) {
                      return bundle;
                  }
 
                  // Start to read the tags and attributes from the xmlResourceParser
                  if (!xmlResourceParser.getName().equals("manifest")) {
                      return bundle;
                  }
                  String packageName = xmlResourceParser.getAttributeValue(null, "package");
                  bundle.putString("package", packageName);
 
                  // Continue to read the tags and attributes from the xmlResourceParser
 
                  return bundle;
              });
  } catch (IOException e) {
  }
  </code>
Note: When the parserFunction is invoked, the client can read the AndroidManifest.xml information by the XmlResourceParser object. After leaving the parserFunction, the XmlResourceParser object will be closed. The caller should also handle the exception for calling this method.
This method may take several seconds to complete, so it should only be called from a worker thread.
Parameters
apkFile File: The file of an application apk. This value cannot be null.
parserFunction Function<XmlResourceParser!, T>: The parserFunction will be invoked with the XmlResourceParser object after getting the AndroidManifest.xml of an application package. This value cannot be null.
Return
T Returns the result of the Function.apply(Object).
Exceptions
java.io.IOException if the AndroidManifest.xml of an application package cannot be read or accessed.

queryActivityProperty

Added in API level 31
open fun queryActivityProperty(propertyName: String): MutableList<PackageManager.Property!>

Returns the property definition for all <activity> and <activity-alias> tags.

If the property is not defined with any <activity> and <activity-alias> tag, returns and empty list.

Parameters
propertyName String: This value cannot be null.
Return
MutableList<PackageManager.Property!> This value cannot be null.

queryApplicationProperty

Added in API level 31
open fun queryApplicationProperty(propertyName: String): MutableList<PackageManager.Property!>

Returns the property definition for all <application> tags.

If the property is not defined with any <application> tag, returns and empty list.

Parameters
propertyName String: This value cannot be null.
Return
MutableList<PackageManager.Property!> This value cannot be null.

queryBroadcastReceivers

Added in API level 33
open fun queryBroadcastReceivers(
    intent: Intent,
    flags: PackageManager.ResolveInfoFlags
): MutableList<ResolveInfo!>

See queryBroadcastReceivers(android.content.Intent,int).

Parameters
intent Intent: This value cannot be null.
flags PackageManager.ResolveInfoFlags: This value cannot be null.
Return
MutableList<ResolveInfo!> This value cannot be null.

queryBroadcastReceivers

Added in API level 1
abstract fun queryBroadcastReceivers(
    intent: Intent,
    flags: Int
): MutableList<ResolveInfo!>

Retrieve all receivers that can handle a broadcast of the given intent. Use queryBroadcastReceivers(android.content.Intent,android.content.pm.PackageManager.ResolveInfoFlags) when long flags are needed.

Parameters
intent Intent: The desired intent as per resolveActivity(). This value cannot be null.
flags Int: Additional option flags to modify the data returned.
Return
MutableList<ResolveInfo!> Returns a List of ResolveInfo objects containing one entry for each matching receiver, ordered from best to worst. If there are no matching receivers, an empty list or null is returned.

queryContentProviders

Added in API level 33
open fun queryContentProviders(
    processName: String?,
    uid: Int,
    flags: PackageManager.ComponentInfoFlags
): MutableList<ProviderInfo!>

See queryContentProviders(java.lang.String,int,int).

Parameters
processName String?: This value may be null.
flags PackageManager.ComponentInfoFlags: This value cannot be null.
Return
MutableList<ProviderInfo!> This value cannot be null.

queryContentProviders

Added in API level 1
abstract fun queryContentProviders(
    processName: String?,
    uid: Int,
    flags: Int
): MutableList<ProviderInfo!>

Retrieve content provider information.

Note: unlike most other methods, an empty result set is indicated by a null return instead of an empty list. Use queryContentProviders(java.lang.String,int,android.content.pm.PackageManager.ComponentInfoFlags) when long flags are needed.

Parameters
processName String?: If non-null, limits the returned providers to only those that are hosted by the given process. If null, all content providers are returned.
uid Int: If processName is non-null, this is the required uid owning the requested content providers.
flags Int: Additional option flags to modify the data returned.
Return
MutableList<ProviderInfo!> A list of ProviderInfo objects containing one entry for each provider either matching processName or, if processName is null, all known content providers. If there are no matching providers, null is returned.

queryInstrumentation

Added in API level 1
abstract fun queryInstrumentation(
    targetPackage: String,
    flags: Int
): MutableList<InstrumentationInfo!>

Retrieve information about available instrumentation code. May be used to retrieve either all instrumentation code, or only the code targeting a particular package.

Parameters
targetPackage String: If null, all instrumentation is returned; only the instrumentation targeting this package name is returned.
flags Int: Additional option flags to modify the data returned. Value is either 0 or android.content.pm.PackageManager#GET_META_DATA
Return
MutableList<InstrumentationInfo!> A list of InstrumentationInfo objects containing one entry for each matching instrumentation. If there are no instrumentation available, returns an empty list. This value cannot be null.

queryIntentActivities

Added in API level 33
open fun queryIntentActivities(
    intent: Intent,
    flags: PackageManager.ResolveInfoFlags
): MutableList<ResolveInfo!>

See queryIntentActivities(android.content.Intent,int).

Parameters
intent Intent: This value cannot be null.
flags PackageManager.ResolveInfoFlags: This value cannot be null.
Return
MutableList<ResolveInfo!> This value cannot be null.

queryIntentActivities

Added in API level 1
abstract fun queryIntentActivities(
    intent: Intent,
    flags: Int
): MutableList<ResolveInfo!>

Retrieve all activities that can be performed for the given intent. Use queryIntentActivities(android.content.Intent,android.content.pm.PackageManager.ResolveInfoFlags) when long flags are needed.

Parameters
intent Intent: The desired intent as per resolveActivity(). This value cannot be null.
flags Int: Additional option flags to modify the data returned. The most important is MATCH_DEFAULT_ONLY, to limit the resolution to only those activities that support the android.content.Intent#CATEGORY_DEFAULT. Or, set MATCH_ALL to prevent any filtering of the results.
Return
MutableList<ResolveInfo!> Returns a List of ResolveInfo objects containing one entry for each matching activity, ordered from best to worst. In other words, the first item is what would be returned by #resolveActivity. If there are no matching activities, an empty list is returned. This value cannot be null.

queryIntentActivityOptions

Added in API level 1
abstract fun queryIntentActivityOptions(
    caller: ComponentName?,
    specifics: Array<Intent!>?,
    intent: Intent,
    flags: Int
): MutableList<ResolveInfo!>

Retrieve a set of activities that should be presented to the user as similar options. This is like #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. Use queryIntentActivityOptions(android.content.ComponentName,java.util.List,android.content.Intent,android.content.pm.PackageManager.ResolveInfoFlags) when long flags are needed.

Parameters
caller ComponentName?: The class name of the activity that is making the request. This activity will never appear in the output list. Can be null.
specifics Array<Intent!>?: An array of Intents that should be resolved to the first specific results. Can be null.
intent Intent: The desired intent as per resolveActivity(). This value cannot be null.
flags Int: Additional option flags to modify the data returned. The most important is MATCH_DEFAULT_ONLY, to limit the resolution to only those activities that support the android.content.Intent#CATEGORY_DEFAULT.
Return
MutableList<ResolveInfo!> Returns a List of ResolveInfo objects containing one entry for each matching activity. The list is 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. This value cannot be null.

queryIntentActivityOptions

Added in API level 33
open fun queryIntentActivityOptions(
    caller: ComponentName?,
    specifics: MutableList<Intent!>?,
    intent: Intent,
    flags: PackageManager.ResolveInfoFlags
): MutableList<ResolveInfo!>

See queryIntentActivityOptions(android.content.ComponentName,android.content.Intent[],android.content.Intent,int).

Parameters
caller ComponentName?: This value may be null.
specifics MutableList<Intent!>?: This value may be null.
intent Intent: This value cannot be null.
flags PackageManager.ResolveInfoFlags: This value cannot be null.
Return
MutableList<ResolveInfo!> This value cannot be null.

queryIntentContentProviders

Added in API level 33
open fun queryIntentContentProviders(
    intent: Intent,
    flags: PackageManager.ResolveInfoFlags
): MutableList<ResolveInfo!>

See queryIntentContentProviders(android.content.Intent,int).

Parameters
intent Intent: This value cannot be null.
flags PackageManager.ResolveInfoFlags: This value cannot be null.
Return
MutableList<ResolveInfo!> This value cannot be null.

queryIntentContentProviders

Added in API level 19
abstract fun queryIntentContentProviders(
    intent: Intent,
    flags: Int
): MutableList<ResolveInfo!>

Retrieve all providers that can match the given intent. Use queryIntentContentProviders(android.content.Intent,android.content.pm.PackageManager.ResolveInfoFlags) when long flags are needed.

Parameters
intent Intent: An intent containing all of the desired specification (action, data, type, category, and/or component). This value cannot be null.
flags Int: Additional option flags to modify the data returned.
Return
MutableList<ResolveInfo!> Returns a List of ResolveInfo objects containing one entry for each matching provider, ordered from best to worst. If there are no matching services, an empty list or null is returned.

queryIntentServices

Added in API level 33
open fun queryIntentServices(
    intent: Intent,
    flags: PackageManager.ResolveInfoFlags
): MutableList<ResolveInfo!>

See queryIntentServices(android.content.Intent,int).

Parameters
intent Intent: This value cannot be null.
flags PackageManager.ResolveInfoFlags: This value cannot be null.
Return
MutableList<ResolveInfo!> This value cannot be null.

queryIntentServices

Added in API level 1
abstract fun queryIntentServices(
    intent: Intent,
    flags: Int
): MutableList<ResolveInfo!>

Retrieve all services that can match the given intent. Use queryIntentServices(android.content.Intent,android.content.pm.PackageManager.ResolveInfoFlags) when long flags are needed.

Parameters
intent Intent: The desired intent as per resolveService(). This value cannot be null.
flags Int: Additional option flags to modify the data returned.
Return
MutableList<ResolveInfo!> Returns a List of ResolveInfo objects containing one entry for each matching service, ordered from best to worst. In other words, the first item is what would be returned by #resolveService. If there are no matching services, an empty list or null is returned.

queryPermissionsByGroup

Added in API level 1
abstract fun queryPermissionsByGroup(
    permissionGroup: String?,
    flags: Int
): MutableList<PermissionInfo!>

Query for all of the permissions associated with a particular group.

Parameters
permissionGroup String?: 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.
flags Int: Additional option flags to modify the data returned. Value is either 0 or android.content.pm.PackageManager#GET_META_DATA
Return
MutableList<PermissionInfo!> Returns a list of PermissionInfo containing information about all of the permissions in the given group. This value cannot be null.
Exceptions
android.content.pm.PackageManager.NameNotFoundException if a group with the given name cannot be found on the system.

queryProviderProperty

Added in API level 31
open fun queryProviderProperty(propertyName: String): MutableList<PackageManager.Property!>

Returns the property definition for all <provider> tags.

If the property is not defined with any <provider> tag, returns and empty list.

Parameters
propertyName String: This value cannot be null.
Return
MutableList<PackageManager.Property!> This value cannot be null.

queryReceiverProperty

Added in API level 31
open fun queryReceiverProperty(propertyName: String): MutableList<PackageManager.Property!>

Returns the property definition for all <receiver> tags.

If the property is not defined with any <receiver> tag, returns and empty list.

Parameters
propertyName String: This value cannot be null.
Return
MutableList<PackageManager.Property!> This value cannot be null.

queryServiceProperty

Added in API level 31
open fun queryServiceProperty(propertyName: String): MutableList<PackageManager.Property!>

Returns the property definition for all <service> tags.

If the property is not defined with any <service> tag, returns and empty list.

Parameters
propertyName String: This value cannot be null.
Return
MutableList<PackageManager.Property!> This value cannot be null.

relinquishUpdateOwnership

Added in API level 34
open fun relinquishUpdateOwnership(targetPackage: String): Unit

Attempt to relinquish the update ownership of the given package. Only the current update owner of the given package can use this API.

Parameters
targetPackage String: The installed package whose update owner will be changed. This value cannot be null.
Exceptions
java.lang.IllegalArgumentException if the given package is invalid.
java.lang.SecurityException if you are not the current update owner of the given package.

removePackageFromPreferred

Added in API level 1
Deprecated in API level 15
abstract fun removePackageFromPreferred(packageName: String): Unit

Deprecated: This function no longer does anything. It is the platform's responsibility to assign preferred activities and this cannot be modified directly. To determine the activities resolved by the platform, use #resolveActivity or #queryIntentActivities. To configure an app to be responsible for a particular role and to check current role holders, see android.app.role.RoleManager.

Parameters
packageName String: This value cannot be null.

removePermission

Added in API level 1
abstract fun removePermission(permName: String): Unit

Removes a permission that was previously added with addPermission(android.content.pm.PermissionInfo). The same ownership rules apply -- you are only allowed to remove permissions that you are allowed to add.

Parameters
permName String: The name of the permission to remove. This value cannot be null.
Exceptions
java.lang.SecurityException if you are not allowed to remove the given permission name.

removeWhitelistedRestrictedPermission

Added in API level 29
open fun removeWhitelistedRestrictedPermission(
    packageName: String,
    permName: String,
    whitelistFlags: Int
): Boolean

Removes a whitelisted restricted permission for an app.

Permissions can be hard restricted which means that the app cannot hold them or soft restricted where the app can hold the permission but in a weaker form. Whether a permission is restricted or soft restricted depends on the permission declaration. Whitelisting a hard restricted permission allows for the to hold that permission and whitelisting a soft restricted permission allows the app to hold the permission in its full, unrestricted form.

    There are four whitelists:
  1. one for cases where the system permission policy whitelists a permission This list corresponds to the FLAG_PERMISSION_WHITELIST_SYSTEM flag. Can only be modified by pre-installed holders of a dedicated permission.
  2. one for cases where the system whitelists the permission when upgrading from an OS version in which the permission was not restricted to an OS version in which the permission is restricted. This list corresponds to the FLAG_PERMISSION_WHITELIST_UPGRADE flag. Can be modified by pre-installed holders of a dedicated permission. The installer on record can only remove permissions from this whitelist.
  3. one for cases where the installer of the package whitelists a permission. This list corresponds to the FLAG_PERMISSION_WHITELIST_INSTALLER flag. Can be modified by pre-installed holders of a dedicated permission or the installer on record.
  4. one for cases where the system exempts the permission when upgrading from an OS version in which the permission was not restricted to an OS version in which the permission is restricted. This list corresponds to the FLAG_PERMISSION_WHITELIST_UPGRADE flag. Can be modified by pre-installed holders of a dedicated permission. The installer on record can only remove permissions from this allowlist.

You need to specify the whitelists for which to set the whitelisted permissions which will clear the previous whitelisted permissions and replace them with the provided ones.

Note: In retrospect it would have been preferred to use more inclusive terminology when naming this API. Similar APIs added will refrain from using the term "whitelist".

Parameters
packageName String: The app for which to get whitelisted permissions. This value cannot be null.
permName String: The whitelisted permission to remove. This value cannot be null.
whitelistFlags Int: The whitelists from which to remove. Passing multiple flags updates all specified whitelists. Value is either 0 or a combination of android.content.pm.PackageManager#FLAG_PERMISSION_WHITELIST_SYSTEM, android.content.pm.PackageManager#FLAG_PERMISSION_WHITELIST_INSTALLER, and android.content.pm.PackageManager#FLAG_PERMISSION_WHITELIST_UPGRADE
Return
Boolean Whether the permission was removed from the whitelist.
Exceptions
java.lang.SecurityException if you try to modify a whitelist that you have no access to.

requestChecksums

Added in API level 31
open fun requestChecksums(
    packageName: String,
    includeSplits: Boolean,
    required: Int,
    trustedInstallers: MutableList<Certificate!>,
    onChecksumsReadyListener: PackageManager.OnChecksumsReadyListener
): Unit

Requests the checksums for APKs within a package. The checksums will be returned asynchronously via onChecksumsReadyListener. By default returns all readily available checksums: - enforced by platform, - enforced by installer. If caller needs a specific checksum kind, they can specify it as required. Caution: Android can not verify installer-provided checksums. Make sure you specify trusted installers.

Parameters
packageName String: whose checksums to return. This value cannot be null.
includeSplits Boolean: whether to include checksums for non-base splits.
required Int: explicitly request the checksum types. May incur significant CPU/memory/disk usage. Value is either 0 or a combination of android.content.pm.Checksum#TYPE_WHOLE_MERKLE_ROOT_4K_SHA256, android.content.pm.Checksum#TYPE_WHOLE_MD5, android.content.pm.Checksum#TYPE_WHOLE_SHA1, android.content.pm.Checksum#TYPE_WHOLE_SHA256, android.content.pm.Checksum#TYPE_WHOLE_SHA512, android.content.pm.Checksum#TYPE_PARTIAL_MERKLE_ROOT_1M_SHA256, and android.content.pm.Checksum#TYPE_PARTIAL_MERKLE_ROOT_1M_SHA512
trustedInstallers MutableList<Certificate!>: for checksums enforced by installer, which installers are to be trusted. TRUST_ALL will return checksums from any installer, TRUST_NONE disables optimized installer-enforced checksums, otherwise the list has to be non-empty list of certificates. This value cannot be null.
onChecksumsReadyListener PackageManager.OnChecksumsReadyListener: called once when the results are available. This value cannot be null.
Exceptions
java.security.cert.CertificateEncodingException if an encoding error occurs for trustedInstallers.
java.lang.IllegalArgumentException if the list of trusted installer certificates is empty.
android.content.pm.PackageManager.NameNotFoundException if a package with the given name cannot be found on the system.

resolveActivity

Added in API level 33
open fun resolveActivity(
    intent: Intent,
    flags: PackageManager.ResolveInfoFlags
): ResolveInfo?

See resolveActivity(android.content.Intent,int).

Parameters
intent Intent: This value cannot be null.
flags PackageManager.ResolveInfoFlags: This value cannot be null.
Return
ResolveInfo? This value may be null.

resolveActivity

Added in API level 1
abstract fun resolveActivity(
    intent: Intent,
    flags: Int
): ResolveInfo?

Determine the best action to perform for a given Intent. This is how 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 MATCH_DEFAULT_ONLY only flag. You need to do so to resolve the activity in the same way that android.content.Context#startActivity(Intent) and Intent.resolveActivity(PackageManager) do.

Use resolveActivity(android.content.Intent,android.content.pm.PackageManager.ResolveInfoFlags) when long flags are needed.
Parameters
intent Intent: An intent containing all of the desired specification (action, data, type, category, and/or component). This value cannot be null.
flags Int: Additional option flags to modify the data returned. The most important is MATCH_DEFAULT_ONLY, to limit the resolution to only those activities that support the android.content.Intent#CATEGORY_DEFAULT.
Return
ResolveInfo? Returns a ResolveInfo object 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 object containing something else, such as the activity resolver.

resolveContentProvider

Added in API level 33
open fun resolveContentProvider(
    authority: String,
    flags: PackageManager.ComponentInfoFlags
): ProviderInfo?

See resolveContentProvider(java.lang.String,int).

Parameters
authority String: This value cannot be null.
flags PackageManager.ComponentInfoFlags: This value cannot be null.
Return
ProviderInfo? This value may be null.

resolveContentProvider

Added in API level 1
abstract fun resolveContentProvider(
    authority: String,
    flags: Int
): ProviderInfo?

Find a single content provider by its authority.

Example:

Uri uri = Uri.parse("content://com.example.app.provider/table1");
  ProviderInfo info = packageManager.resolveContentProvider(uri.getAuthority(), flags);
  
Use resolveContentProvider(java.lang.String,android.content.pm.PackageManager.ComponentInfoFlags) when long flags are needed.
Parameters
authority String: The authority of the provider to find. This value cannot be null.
flags Int: Additional option flags to modify the data returned.
Return
ProviderInfo? A ProviderInfo object containing information about the provider. If a provider was not found, returns null.

resolveService

Added in API level 33
open fun resolveService(
    intent: Intent,
    flags: PackageManager.ResolveInfoFlags
): ResolveInfo?

See resolveService(android.content.Intent,int).

Parameters
intent Intent: This value cannot be null.
flags PackageManager.ResolveInfoFlags: This value cannot be null.
Return
ResolveInfo? This value may be null.

resolveService

Added in API level 1
abstract fun resolveService(
    intent: Intent,
    flags: Int
): ResolveInfo?

Determine the best service to handle for a given Intent. Use resolveService(android.content.Intent,android.content.pm.PackageManager.ResolveInfoFlags) when long flags are needed.

Parameters
intent Intent: An intent containing all of the desired specification (action, data, type, category, and/or component). This value cannot be null.
flags Int: Additional option flags to modify the data returned.
Return
ResolveInfo? Returns a ResolveInfo object containing the final service intent that was determined to be the best action. Returns null if no matching service was found.

setApplicationCategoryHint

Added in API level 26
abstract fun setApplicationCategoryHint(
    packageName: String,
    categoryHint: Int
): Unit

Provide a hint of what the ApplicationInfo.category value should be for the given package.

This hint can only be set by the app which installed this package, as determined by getInstallerPackageName(java.lang.String).

Parameters
packageName String: the package to change the category hint for. This value cannot be null.
categoryHint Int: the category hint to set. Value is android.content.pm.ApplicationInfo#CATEGORY_UNDEFINED, android.content.pm.ApplicationInfo#CATEGORY_GAME, android.content.pm.ApplicationInfo#CATEGORY_AUDIO, android.content.pm.ApplicationInfo#CATEGORY_VIDEO, android.content.pm.ApplicationInfo#CATEGORY_IMAGE, android.content.pm.ApplicationInfo#CATEGORY_SOCIAL, android.content.pm.ApplicationInfo#CATEGORY_NEWS, android.content.pm.ApplicationInfo#CATEGORY_MAPS, android.content.pm.ApplicationInfo#CATEGORY_PRODUCTIVITY, or android.content.pm.ApplicationInfo#CATEGORY_ACCESSIBILITY

setApplicationEnabledSetting

Added in API level 1
abstract fun setApplicationEnabledSetting(
    packageName: String,
    newState: Int,
    flags: Int
): Unit

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 setComponentEnabledSetting for any of the application's components.

Parameters
packageName String: The package name of the application to enable This value cannot be null.
newState Int: The new enabled state for the application. Value is android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_DEFAULT, android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_ENABLED, android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_DISABLED, android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_DISABLED_USER, or android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED
flags Int: Optional behavior flags. Value is either 0 or a combination of android.content.pm.PackageManager#DONT_KILL_APP, and android.content.pm.PackageManager#SYNCHRONOUS

setAutoRevokeWhitelisted

Added in API level 30
open fun setAutoRevokeWhitelisted(
    packageName: String,
    whitelisted: Boolean
): Boolean

Marks an application exempt from having its permissions be automatically revoked when the app is unused for an extended period of time. Only the installer on record that installed the given package is allowed to call this. Packages start in whitelisted state, and it is the installer's responsibility to un-whitelist the packages it installs, unless auto-revoking permissions from that package would cause breakages beyond having to re-request the permission(s).

Note: In retrospect it would have been preferred to use more inclusive terminology when naming this API. Similar APIs added will refrain from using the term "whitelist".

Parameters
packageName String: The app for which to set exemption. This value cannot be null.
whitelisted Boolean: Whether the app should be whitelisted.
Return
Boolean whether any change took effect.
Exceptions
java.lang.SecurityException if you you have no access to modify this.

See Also

    setComponentEnabledSetting

    Added in API level 1
    abstract fun setComponentEnabledSetting(
        componentName: ComponentName,
        newState: Int,
        flags: Int
    ): Unit

    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.

    Consider using setComponentEnabledSettings(java.util.List) if multiple components need to be updated atomically.

    Parameters
    componentName ComponentName: The component to enable This value cannot be null.
    newState Int: The new enabled state for the component. Value is android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_DEFAULT, android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_ENABLED, android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_DISABLED, android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_DISABLED_USER, or android.content.pm.PackageManager#COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED
    flags Int: Optional behavior flags. Value is either 0 or a combination of android.content.pm.PackageManager#DONT_KILL_APP, and android.content.pm.PackageManager#SYNCHRONOUS

    setComponentEnabledSettings

    Added in API level 33
    open fun setComponentEnabledSettings(settings: MutableList<PackageManager.ComponentEnabledSetting!>): Unit

    Set the enabled settings for package components such as activities, receivers, services and providers. This setting will override any enabled state which may have been set by the component in its manifest.

    This api accepts a list of component changes, and applies them all atomically. The application can use this api if components have dependencies and need to be updated atomically.

    The permission is not required if target components are running under the same uid with the caller.

    Parameters
    settings MutableList<PackageManager.ComponentEnabledSetting!>: The list of component enabled settings to update. Note that an IllegalArgumentException is thrown if the duplicated component name is in the list or there's a conflict DONT_KILL_APP flag between different components in the same package. This value cannot be null.

    setInstallerPackageName

    Added in API level 11
    abstract fun setInstallerPackageName(
        targetPackage: String,
        installerPackageName: String?
    ): Unit

    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.

    Parameters
    targetPackage String: The installed package whose installer will be changed. This value cannot be null.
    installerPackageName String?: The package name of the new installer. May be null to clear the association.

    setMimeGroup

    Added in API level 30
    open fun setMimeGroup(
        mimeGroup: String,
        mimeTypes: MutableSet<String!>
    ): Unit

    Sets MIME group's MIME types. Libraries should use a reverse-DNS prefix followed by a ':' character and library-specific group name to avoid namespace collisions, e.g. "com.example:myFeature".

    Parameters
    mimeGroup String: MIME group to modify. This value cannot be null.
    mimeTypes MutableSet<String!>: new MIME types contained by MIME group. This value cannot be null.
    Exceptions
    java.lang.IllegalArgumentException if the MIME group was not declared in the manifest.

    updateInstantAppCookie

    Added in API level 26
    abstract fun updateInstantAppCookie(cookie: ByteArray?): Unit

    Updates the instant application cookie for the calling app. Non instant apps and apps that were instant but were upgraded to normal apps can still access this API. For instant apps this cookie is cached for some time after uninstall while for normal apps the cookie is deleted after the app is uninstalled. The cookie is always present while the app is installed. The cookie size is limited by getInstantAppCookieMaxBytes(). Passing null or an empty array clears the cookie.

    Parameters
    cookie ByteArray?: The cookie data. This value may be null.
    Exceptions
    java.lang.IllegalArgumentException if the array exceeds max cookie size.

    verifyPendingInstall

    Added in API level 14
    abstract fun verifyPendingInstall(
        id: Int,
        verificationCode: Int
    ): Unit

    Allows a package listening to the broadcast to respond to the package manager. The response must include the verificationCode which is one of PackageManager.VERIFICATION_ALLOW or PackageManager.VERIFICATION_REJECT.

    Parameters
    id Int: pending package identifier as passed via the PackageManager.EXTRA_VERIFICATION_ID Intent extra.
    verificationCode Int: either PackageManager.VERIFICATION_ALLOW or PackageManager.VERIFICATION_REJECT.
    Exceptions
    java.lang.SecurityException if the caller does not have the PACKAGE_VERIFICATION_AGENT permission.

    Properties

    TRUST_ALL

    Added in API level 31
    static val TRUST_ALL: MutableList<Certificate!>

    Trust any Installer to provide checksums for the package.

    TRUST_NONE

    Added in API level 31
    static val TRUST_NONE: MutableList<Certificate!>

    Don't trust any Installer to provide checksums for the package. This effectively disables optimized Installer-enforced checksums.