Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Inherited Constants](https://developer.android.com/reference/android/test/mock/MockPackageManager#inhconstants) \| [Inherited Fields](https://developer.android.com/reference/android/test/mock/MockPackageManager#inhfields) \| [Ctors](https://developer.android.com/reference/android/test/mock/MockPackageManager#pubctors) \| [Methods](https://developer.android.com/reference/android/test/mock/MockPackageManager#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/test/mock/MockPackageManager#inhmethods)

# MockPackageManager

*** ** * ** ***


`
public


class
MockPackageManager
`


`


`

`

extends https://developer.android.com/reference/android/content/pm/PackageManager


`

`


`

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) |||
| ↳ | [android.content.pm.PackageManager](https://developer.android.com/reference/android/content/pm/PackageManager) ||
|   | ↳ | android.test.mock.MockPackageManager |

<br />

*** ** * ** ***


**This class was deprecated
in API level 24.**   

Use a mocking framework like [Mockito](https://github.com/mockito/mockito).
New tests should be written using the
[Android Testing Support Library](https://developer.android.com/tools/testing-support-library).

A mock `https://developer.android.com/reference/android/content/pm/PackageManager` class. All methods are non-functional and throw
`https://developer.android.com/reference/java/lang/UnsupportedOperationException`. Override it to provide the operations that you
need.

## Summary

### Inherited constants

From class `https://developer.android.com/reference/android/content/pm/PackageManager` `int` `https://developer.android.com/reference/android/content/pm/PackageManager#CERT_INPUT_RAW_X509`

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


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#CERT_INPUT_SHA256`

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


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DEFAULT`

Flag for `https://developer.android.com/reference/android/content/pm/PackageManager#setApplicationEnabledSetting(java.lang.String,%20int,%20int)` and
`https://developer.android.com/reference/android/content/pm/PackageManager#setComponentEnabledSetting(android.content.ComponentName,%20int,%20int)`: This
component or application is in its default enabled state (as specified in
its manifest).


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DISABLED`

Flag for `https://developer.android.com/reference/android/content/pm/PackageManager#setApplicationEnabledSetting(java.lang.String,%20int,%20int)`
and `https://developer.android.com/reference/android/content/pm/PackageManager#setComponentEnabledSetting(android.content.ComponentName,%20int,%20int)`: This
component or application has been explicitly disabled, regardless of
what it has specified in its manifest.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED`

Flag for `https://developer.android.com/reference/android/content/pm/PackageManager#setApplicationEnabledSetting(java.lang.String,%20int,%20int)` only: This
application should be considered, until the point where the user actually
wants to use it.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DISABLED_USER`

Flag for `https://developer.android.com/reference/android/content/pm/PackageManager#setApplicationEnabledSetting(java.lang.String,%20int,%20int)` only: The
user has explicitly disabled the application, regardless of what it has
specified in its manifest.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_ENABLED`

Flag for `https://developer.android.com/reference/android/content/pm/PackageManager#setApplicationEnabledSetting(java.lang.String,%20int,%20int)`
and `https://developer.android.com/reference/android/content/pm/PackageManager#setComponentEnabledSetting(android.content.ComponentName,%20int,%20int)`: This
component or application has been explictily enabled, regardless of
what it has specified in its manifest.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#DELETE_ARCHIVE`

Flag parameter for `https://developer.android.com/reference/android/content/pm/PackageInstaller#uninstall(android.content.pm.VersionedPackage,%20int,%20android.content.IntentSender)` to
indicate that the deletion is an archival.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#DONT_KILL_APP`

Flag parameter for
`https://developer.android.com/reference/android/content/pm/PackageManager#setComponentEnabledSetting(android.content.ComponentName,%20int,%20int)` to indicate
that you don't want to kill the app containing the component.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#EXTRA_VERIFICATION_ID`

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


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#EXTRA_VERIFICATION_RESULT`

Extra field name for the result of a verification, either
`https://developer.android.com/reference/android/content/pm/PackageManager#VERIFICATION_ALLOW`, or `https://developer.android.com/reference/android/content/pm/PackageManager#VERIFICATION_REJECT`.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device supports running activities on secondary displays.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_APP_WIDGETS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports app widgets.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_AUDIO_LOW_LATENCY`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device's
audio pipeline is low-latency, more suitable for audio applications sensitive to delays or
lag in sound input or output.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_AUDIO_OUTPUT`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes at least one form of audio
output, as defined in the Android Compatibility Definition Document (CDD)
[section 7.8 Audio](https://source.android.com/compatibility/android-cdd#7_8_audio).


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_AUDIO_PRO`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device has professional audio level of functionality and performance.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_AUDIO_SPATIAL_HEADTRACKING_LOW_LATENCY`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`
which indicates whether head tracking for spatial audio operates with low-latency,
as defined by the CDD criteria for the feature.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_AUTOFILL`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device supports autofill of user credentials, addresses, credit cards, etc
via integration with `https://developer.android.com/reference/android/service/autofill/AutofillService`.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_AUTOMOTIVE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: This is a device dedicated to showing UI
on a vehicle headunit.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_BACKUP`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device can perform backup and restore operations on installed applications.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_BLUETOOTH`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device is capable of communicating with
other devices via Bluetooth.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_BLUETOOTH_LE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device is capable of communicating with
other devices via Bluetooth Low Energy radio.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_BLUETOOTH_LE_CHANNEL_SOUNDING`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device is capable of ranging with
other devices using channel sounding via Bluetooth Low Energy radio.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CAMERA`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device has a camera facing away
from the screen.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CAMERA_ANY`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device has at least one camera pointing in
some direction, or can support an external or a
`https://developer.android.com/reference/android/companion/virtual/VirtualDevice` camera being connected to it.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CAMERA_AR`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: At least one
of the cameras on the device supports the
`https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING` capability level.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CAMERA_AUTOFOCUS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device's camera supports auto-focus.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: At least one
of the cameras on the device supports the
`https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING`
capability level.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: At least one
of the cameras on the device supports the
`https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR`
capability level.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CAMERA_CAPABILITY_RAW`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: At least one
of the cameras on the device supports the
`https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW`
capability level.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CAMERA_CONCURRENT`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device's main front and back cameras can stream
concurrently as described in `https://developer.android.com/reference/android/hardware/camera2/CameraManager#getConcurrentCameraIds()`.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CAMERA_EXTERNAL`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device can support having an external camera connected to it.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CAMERA_FLASH`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device's camera supports flash.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CAMERA_FRONT`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device has a front facing camera.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CAMERA_LEVEL_FULL`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: At least one
of the cameras on the device supports the
`https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL`
capability level.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CANT_SAVE_STATE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports the
`https://developer.android.com/reference/android/R.attr#cantSaveState` API.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_COMPANION_DEVICE_SETUP`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device supports `https://developer.android.com/reference/android/companion/CompanionDeviceManager#associate(android.companion.AssociationRequest,%20android.companion.CompanionDeviceManager.Callback,%20android.os.Handler)`
with devices via `https://developer.android.com/reference/android/companion/CompanionDeviceManager`.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CONNECTION_SERVICE`

*This constant was deprecated
in API level 33.
use `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELECOM` instead.*


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CONSUMER_IR`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device is capable of communicating with
consumer IR devices.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CONTROLS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports a system interface for the user to select
and bind device control services provided by applications.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_CREDENTIALS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device
supports retrieval of user credentials, via integration with credential providers.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_DEVICE_ADMIN`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports device policy enforcement via device admins.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_DEVICE_ID_ATTESTATION`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device has a KeyMint (or Keymaster) implementation that supports device ID attestation.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_DEVICE_LOCK`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device
supports locking (for example, by a financing provider in case of a missed payment).


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_EMBEDDED`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: This is a device for IoT and may not have an UI.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_ETHERNET`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: This device supports ethernet.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_EXPANDED_PICTURE_IN_PICTURE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device supports expanded picture-in-picture multi-window mode.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_FACE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device has biometric hardware to perform face authentication.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_FAKETOUCH`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device does not have a touch screen, but
does support touch emulation for basic events.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: 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.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: 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.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_FINGERPRINT`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device has biometric hardware to detect a fingerprint.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_FREEFORM_WINDOW_MANAGEMENT`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports freeform window management.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_GAMEPAD`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device has all of the inputs necessary to be considered a compatible game controller, or
includes a compatible game controller in the box.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_HARDWARE_KEYSTORE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String,%20int)`: If this feature is supported, the device implements
the Android Keystore backed by an isolated execution environment.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_HIFI_SENSORS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports high fidelity sensor processing
capabilities.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_HOME_SCREEN`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports a home screen that is replaceable
by third party applications.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_IDENTITY_CREDENTIAL_HARDWARE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String,%20int)`: If this feature is supported, the device supports
`https://developer.android.com/reference/android/security/identity/IdentityCredentialStore` implemented in secure hardware
at the given feature version.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_IDENTITY_CREDENTIAL_HARDWARE_DIRECT_ACCESS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String,%20int)`: If this feature is supported, the device supports
`https://developer.android.com/reference/android/security/identity/IdentityCredentialStore` implemented in secure hardware
with direct access at the given feature version.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_INPUT_METHODS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports adding new input methods implemented
with the `https://developer.android.com/reference/android/inputmethodservice/InputMethodService` API.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_IPSEC_TUNNELS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device has
the requisite kernel support for multinetworking-capable IPsec tunnels.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_IPSEC_TUNNEL_MIGRATION`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device has
the requisite kernel support for migrating IPsec tunnels to new source/destination addresses.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_IRIS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device has biometric hardware to perform iris authentication.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_KEYSTORE_APP_ATTEST_KEY`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device has
a Keystore implementation that can create application-specific attestation keys.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_KEYSTORE_LIMITED_USE_KEY`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device has
a Keystore implementation that can enforce limited use key in hardware with any max usage
count (including count equals to 1).


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_KEYSTORE_SINGLE_USE_KEY`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device has
a Keystore implementation that can only enforce limited use key in hardware with max usage
count equals to 1.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_LEANBACK`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports leanback UI.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_LEANBACK_ONLY`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports only leanback UI.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_LIVE_TV`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports live TV and can display
contents from TV inputs implemented with the
`https://developer.android.com/reference/android/media/tv/TvInputService` API.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_LIVE_WALLPAPER`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports live wallpapers.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_LOCATION`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports one or more methods of
reporting current location.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_LOCATION_GPS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device has a Global Positioning System
receiver and can report precise location.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_LOCATION_NETWORK`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device can report location with coarse
accuracy using a network-based geolocation system.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_MANAGED_USERS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device supports creating secondary users and managed profiles via
`https://developer.android.com/reference/android/app/admin/DevicePolicyManager`.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_MICROPHONE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device can record audio via a
microphone.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_MIDI`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device has a full implementation of the android.media.midi.\* APIs.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_NEURAL_PROCESSING_UNIT`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: This device
has a NPU (Neural Processing Unit) or similar hardware for accelerating AI workloads.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_NFC`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device can communicate using Near-Field
Communications (NFC), acting as a reader.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_NFC_BEAM`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The Beam API is enabled on the device.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_NFC_HOST_CARD_EMULATION`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports host-
based NFC card emulation.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_NFC_HOST_CARD_EMULATION_NFCF`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports host-
based NFC-F card emulation.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_NFC_OFF_HOST_CARD_EMULATION_ESE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports eSE-
based NFC card emulation.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_NFC_OFF_HOST_CARD_EMULATION_UICC`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports uicc-
based NFC card emulation.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_OPENGLES_DEQP_LEVEL`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String,%20int)`: 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.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_OPENGLES_EXTENSION_PACK`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports the OpenGL ES
[Android Extension Pack](http://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt).


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_PC`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: This is a device dedicated to be primarily used
with keyboard, mouse or touchpad.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_PICTURE_IN_PICTURE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device supports picture-in-picture multi-window mode.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_PRINTING`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device supports printing.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_RAM_LOW`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device's
`https://developer.android.com/reference/android/app/ActivityManager#isLowRamDevice()` method returns
true.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_RAM_NORMAL`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device's
`https://developer.android.com/reference/android/app/ActivityManager#isLowRamDevice()` method returns
false.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SCREEN_LANDSCAPE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports landscape orientation
screens.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SCREEN_PORTRAIT`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports portrait orientation
screens.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SECURELY_REMOVES_USERS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device supports secure removal of users.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SECURE_LOCK_SCREEN`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device has a secure implementation of keyguard, meaning the
device supports PIN, pattern and password as defined in Android CDD


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SECURITY_MODEL_COMPATIBLE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device is
compatible with Android's security model.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_ACCELEROMETER`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes an accelerometer.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_ACCELEROMETER_LIMITED_AXES`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes a limited axes accelerometer.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes an uncalibrated limited axes accelerometer.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_AMBIENT_TEMPERATURE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes an ambient temperature sensor.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_BAROMETER`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes a barometer (air
pressure sensor.)


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_COMPASS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes a magnetometer (compass).


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_DYNAMIC_HEAD_TRACKER`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports exposing head tracker sensors from peripheral
devices via the dynamic sensors API.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_GYROSCOPE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes a gyroscope.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_GYROSCOPE_LIMITED_AXES`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes a limited axes gyroscope.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_GYROSCOPE_LIMITED_AXES_UNCALIBRATED`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes an uncalibrated limited axes gyroscope.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_HEADING`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes a heading sensor.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_HEART_RATE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes a heart rate monitor.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_HEART_RATE_ECG`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The heart rate sensor on this device is an Electrocardiogram.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_HINGE_ANGLE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes a hinge angle sensor.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_LIGHT`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes a light sensor.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_PROXIMITY`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes a proximity sensor.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_RELATIVE_HUMIDITY`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes a relative humidity sensor.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_STEP_COUNTER`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes a hardware step counter.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SENSOR_STEP_DETECTOR`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device includes a hardware step detector.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SE_OMAPI_ESE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports Open Mobile API capable eSE-based secure
elements.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SE_OMAPI_SD`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports Open Mobile API capable SD-based secure
elements.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SE_OMAPI_UICC`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports Open Mobile API capable UICC-based secure
elements.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SIP`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The SIP API is enabled on the device.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_SIP_VOIP`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports SIP-based VOIP.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_STRONGBOX_KEYSTORE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()`, `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`, and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String,%20int)`: If this feature is supported, the device implements
the Android Keystore backed by a dedicated secure processor referred to as
[StrongBox](https://source.android.com/security/best-practices/hardware#strongbox-keymaster).


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELECOM`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device supports Telecom Service APIs.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device has a telephony radio with data
communication support.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_CALLING`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device supports Telephony APIs for calling service.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_CDMA`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device has a CDMA telephony stack.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_DATA`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device supports Telephony APIs for data service.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_EUICC`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device
supports embedded subscriptions on eUICCs.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_EUICC_MEP`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device
supports multiple enabled profiles on eUICCs.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_GSM`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device has a GSM telephony stack.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_IMS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device
supports attaching to IMS implementations using the ImsService API in telephony.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_MBMS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device
supports cell-broadcast reception using the MBMS APIs.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_MESSAGING`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device supports Telephony APIs for SMS and MMS.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_RADIO_ACCESS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device supports Telephony APIs for the radio access.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device supports Telephony APIs for the subscription.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEVISION`

*This constant was deprecated
in API level 21.
use `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_LEANBACK` instead.*


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_THREAD_NETWORK`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device is capable of communicating with other devices via
[Thread](https://www.threadgroup.org) networking protocol.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TOUCHSCREEN`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device's display has a touch screen.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TOUCHSCREEN_MULTITOUCH`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device's touch screen supports
multitouch sufficient for basic two-finger gesture detection.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device's touch screen is capable of
tracking two or more fingers fully independently.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device's touch screen is capable of
tracking a full hand of fingers fully independently -- that is, 5 or
more simultaneous independent pointers.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_USB_ACCESSORY`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports connecting to USB accessories.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_USB_HOST`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports connecting to USB devices
as the USB host.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_UWB`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device is capable of communicating with
other devices via ultra wideband.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_VERIFIED_BOOT`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device supports verified boot.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_VR_HEADTRACKING`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device implements headtracking suitable for a VR device.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_VR_MODE`

*This constant was deprecated
in API level 28.
use `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_VR_MODE_HIGH_PERFORMANCE` instead.*


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_VR_MODE_HIGH_PERFORMANCE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
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.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_VULKAN_DEQP_LEVEL`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String,%20int)`: 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.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_VULKAN_HARDWARE_COMPUTE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String,%20int)`: 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.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_VULKAN_HARDWARE_LEVEL`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String,%20int)`: 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.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_VULKAN_HARDWARE_VERSION`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String,%20int)`: 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 `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_VULKAN_HARDWARE_LEVEL`.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_WALLET_LOCATION_BASED_SUGGESTIONS`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device
supports showing location-based suggestions for wallet cards provided by the default payment
app.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_WATCH`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: This is a device dedicated to showing UI
on a watch.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_WEBVIEW`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`:
The device has a full implementation of the android.webkit.\* APIs.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_WIFI`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports WiFi (802.11) networking.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_WIFI_AWARE`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports Wi-Fi Aware.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_WIFI_DIRECT`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports Wi-Fi Direct networking.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_WIFI_PASSPOINT`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports Wi-Fi Passpoint and all
Passpoint related APIs in `https://developer.android.com/reference/android/net/wifi/WifiManager` are supported.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_WIFI_RTT`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device supports Wi-Fi RTT (IEEE 802.11mc).


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_WINDOW_MAGNIFICATION`

Feature for `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()` and `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`: The device
supports window magnification.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#FLAG_PERMISSION_WHITELIST_INSTALLER`

Permission whitelist flag: permissions whitelisted by the installer.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#FLAG_PERMISSION_WHITELIST_SYSTEM`

Permission whitelist flag: permissions whitelisted by the system.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#FLAG_PERMISSION_WHITELIST_UPGRADE`

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.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_ACTIVITIES`

`https://developer.android.com/reference/android/content/pm/PackageInfo` flag: return information about
activities in the package in `https://developer.android.com/reference/android/content/pm/PackageInfo#activities`.


`long` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_APP_LOCK_INFO`

`https://developer.android.com/reference/android/content/pm/ApplicationInfo`, `https://developer.android.com/reference/android/content/pm/ComponentInfo`, and `https://developer.android.com/reference/android/content/pm/ResolveInfo` flag: return the
`https://developer.android.com/reference/android/content/pm/ApplicationInfo#isAppLockSupported` and `https://developer.android.com/reference/android/content/pm/ApplicationInfo#isAppLockEnabled`
associated with an application.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_ATTRIBUTIONS`

*This constant was deprecated
in API level 34.
Use `https://developer.android.com/reference/android/content/pm/PackageManager#GET_ATTRIBUTIONS_LONG` to avoid unintended sign extension. Operations
with this flag may cause unintended results and potential `https://developer.android.com/reference/java/lang/RuntimeException`.*


`long` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_ATTRIBUTIONS_LONG`

`https://developer.android.com/reference/android/content/pm/PackageInfo` flag: return all attributions declared in the package manifest


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_CONFIGURATIONS`

`https://developer.android.com/reference/android/content/pm/PackageInfo` flag: return information about
hardware preferences in
`https://developer.android.com/reference/android/content/pm/PackageInfo#configPreferences`,
and requested features in `https://developer.android.com/reference/android/content/pm/PackageInfo#reqFeatures` and
`https://developer.android.com/reference/android/content/pm/PackageInfo#featureGroups`.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_DISABLED_COMPONENTS`

*This constant was deprecated
in API level 24.
replaced with `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_DISABLED_COMPONENTS`*


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_DISABLED_UNTIL_USED_COMPONENTS`

*This constant was deprecated
in API level 24.
replaced with `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_DISABLED_UNTIL_USED_COMPONENTS`.*


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_GIDS`

`https://developer.android.com/reference/android/content/pm/PackageInfo` flag: return the
`https://developer.android.com/reference/android/content/pm/PackageInfo#gids` that are associated with an
application.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_INSTRUMENTATION`

`https://developer.android.com/reference/android/content/pm/PackageInfo` flag: return information about
instrumentation in the package in
`https://developer.android.com/reference/android/content/pm/PackageInfo#instrumentation`.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_INTENT_FILTERS`

*This constant was deprecated
in API level 31.
The platform does not support getting `https://developer.android.com/reference/android/content/IntentFilter`s for the package.*


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_META_DATA`

`https://developer.android.com/reference/android/content/pm/ComponentInfo` flag: return the `https://developer.android.com/reference/android/content/pm/PackageItemInfo#metaData`
data `https://developer.android.com/reference/android/os/Bundle`s that are associated with a component.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_PERMISSIONS`

`https://developer.android.com/reference/android/content/pm/PackageInfo` flag: return information about
permissions in the package in
`https://developer.android.com/reference/android/content/pm/PackageInfo#permissions`.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_PROVIDERS`

`https://developer.android.com/reference/android/content/pm/PackageInfo` flag: return information about
content providers in the package in
`https://developer.android.com/reference/android/content/pm/PackageInfo#providers`.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_RECEIVERS`

`https://developer.android.com/reference/android/content/pm/PackageInfo` flag: return information about
intent receivers in the package in
`https://developer.android.com/reference/android/content/pm/PackageInfo#receivers`.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_RESOLVED_FILTER`

`https://developer.android.com/reference/android/content/pm/ResolveInfo` flag: return the IntentFilter that
was matched for a particular ResolveInfo in
`https://developer.android.com/reference/android/content/pm/ResolveInfo#filter`.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_SERVICES`

`https://developer.android.com/reference/android/content/pm/PackageInfo` flag: return information about
services in the package in `https://developer.android.com/reference/android/content/pm/PackageInfo#services`.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_SHARED_LIBRARY_FILES`

`https://developer.android.com/reference/android/content/pm/ApplicationInfo` flag: return the
`https://developer.android.com/reference/android/content/pm/ApplicationInfo#sharedLibraryFiles`
that are associated with an application.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_SIGNATURES`

*This constant was deprecated
in API level 28.
use `GET_SIGNING_CERTIFICATES` instead*


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_SIGNING_CERTIFICATES`

`https://developer.android.com/reference/android/content/pm/PackageInfo` flag: return the signing certificates associated with
this package.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_UNINSTALLED_PACKAGES`

*This constant was deprecated
in API level 24.
replaced with `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_UNINSTALLED_PACKAGES`*


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#GET_URI_PERMISSION_PATTERNS`

`https://developer.android.com/reference/android/content/pm/ProviderInfo` flag: return the
`https://developer.android.com/reference/android/content/pm/ProviderInfo#uriPermissionPatterns`
that are associated with a content provider.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#INSTALL_REASON_DEVICE_RESTORE`

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


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#INSTALL_REASON_DEVICE_SETUP`

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


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#INSTALL_REASON_POLICY`

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


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#INSTALL_REASON_UNKNOWN`

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


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#INSTALL_REASON_USER`

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


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#INSTALL_SCENARIO_BULK`

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


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#INSTALL_SCENARIO_BULK_SECONDARY`

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


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#INSTALL_SCENARIO_DEFAULT`

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


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#INSTALL_SCENARIO_FAST`

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


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_ALL`

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


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_APEX`

`https://developer.android.com/reference/android/content/pm/PackageInfo` flag: include APEX packages that are currently
installed.


`long` `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_ARCHIVED_PACKAGES`

Flag parameter to also retrieve some information about archived packages.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_DEFAULT_ONLY`

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


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_DIRECT_BOOT_AUTO`

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


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_DIRECT_BOOT_AWARE`

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


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_DIRECT_BOOT_UNAWARE`

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


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_DISABLED_COMPONENTS`

`https://developer.android.com/reference/android/content/pm/PackageInfo` flag: include disabled components in the returned info.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_DISABLED_UNTIL_USED_COMPONENTS`

`https://developer.android.com/reference/android/content/pm/PackageInfo` flag: include disabled components which are in
that state only because of `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED`
in the returned info.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_SYSTEM_ONLY`

Querying flag: include only components from applications that are marked
with `https://developer.android.com/reference/android/content/pm/ApplicationInfo#FLAG_SYSTEM`.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_UNINSTALLED_PACKAGES`

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


`long` `https://developer.android.com/reference/android/content/pm/PackageManager#MAXIMUM_VERIFICATION_TIMEOUT`

Can be used as the `millisecondsToDelay` argument for
`https://developer.android.com/reference/android/content/pm/PackageManager#extendVerificationTimeout(int,%20int,%20long)`.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#PERMISSION_DENIED`

Permission check result: this is returned by `https://developer.android.com/reference/android/content/pm/PackageManager#checkPermission(java.lang.String,%20java.lang.String)`
if the permission has not been granted to the given package.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#PERMISSION_GRANTED`

Permission check result: this is returned by `https://developer.android.com/reference/android/content/pm/PackageManager#checkPermission(java.lang.String,%20java.lang.String)`
if the permission has been granted to the given package.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT`

Application level `https://developer.android.com/reference/android/content/pm/PackageManager.Property` 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.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#PROPERTY_MEDIA_CAPABILITIES`

\<application\> level `https://developer.android.com/reference/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\>


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#PROPERTY_NATIVE_SERVICE_FUNCTION_NAME`

Service level `https://developer.android.com/reference/android/content/pm/PackageManager.Property` tag for native services
specifying the symbol name of the entry point function for the service.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#PROPERTY_NATIVE_SERVICE_LIBRARY_NAME`

Service level `https://developer.android.com/reference/android/content/pm/PackageManager.Property` tag for native services
specifying the name of the library to be loaded to the process that hosts the service.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES`

\<application\> level `https://developer.android.com/reference/android/content/pm/PackageManager.Property` tag
specifying the XML resource ID containing the declaration of the self-certified network
capabilities used by the application.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#PROPERTY_SPECIAL_USE_FGS_SUBTYPE`

\<service\> level `https://developer.android.com/reference/android/content/pm/PackageManager.Property` tag specifying
the actual use case of the service if it's foreground service with the type
`https://developer.android.com/reference/android/content/pm/ServiceInfo#FOREGROUND_SERVICE_TYPE_SPECIAL_USE`.


`https://developer.android.com/reference/java/lang/String` `https://developer.android.com/reference/android/content/pm/PackageManager#PROPERTY_USE_RESTRICTED_BACKUP_MODE`

\<application\> level `https://developer.android.com/reference/android/content/pm/PackageManager.Property` tag
specifying whether the app should be put into the "restricted" backup mode when it's started
for backup and restore operations.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_FIRST_NOT_SIGNED`

Signature check result: this is returned by `https://developer.android.com/reference/android/content/pm/PackageManager#checkSignatures(int,%20int)`
if the first package is not signed but the second is.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_MATCH`

Signature check result: this is returned by `https://developer.android.com/reference/android/content/pm/PackageManager#checkSignatures(int,%20int)`
if all signatures on the two packages match.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_NEITHER_SIGNED`

Signature check result: this is returned by `https://developer.android.com/reference/android/content/pm/PackageManager#checkSignatures(int,%20int)`
if neither of the two packages is signed.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_NO_MATCH`

Signature check result: this is returned by `https://developer.android.com/reference/android/content/pm/PackageManager#checkSignatures(int,%20int)`
if not all signatures on both packages match.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_SECOND_NOT_SIGNED`

Signature check result: this is returned by `https://developer.android.com/reference/android/content/pm/PackageManager#checkSignatures(int,%20int)`
if the second package is not signed but the first is.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_UNKNOWN_PACKAGE`

Signature check result: this is returned by `https://developer.android.com/reference/android/content/pm/PackageManager#checkSignatures(int,%20int)`
if either of the packages are not valid.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#SYNCHRONOUS`

Flag parameter for
`https://developer.android.com/reference/android/content/pm/PackageManager#setComponentEnabledSetting(android.content.ComponentName,%20int,%20int)` to indicate
that the given user's package restrictions state will be serialised to disk after the
component state has been updated.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#VERIFICATION_ALLOW`

Used as the `verificationCode` argument for
`https://developer.android.com/reference/android/content/pm/PackageManager#verifyPendingInstall(int,%20int)` to indicate that the calling
package verifier allows the installation to proceed.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#VERIFICATION_REJECT`

Used as the `verificationCode` argument for
`https://developer.android.com/reference/android/content/pm/PackageManager#verifyPendingInstall(int,%20int)` to indicate the calling
package verifier does not vote to allow the installation to proceed.


`int` `https://developer.android.com/reference/android/content/pm/PackageManager#VERSION_CODE_HIGHEST`

Constant for specifying the highest installed package version code.


### Inherited fields

From class `https://developer.android.com/reference/android/content/pm/PackageManager` `
public
static
final
https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/java/security/cert/Certificate>` `https://developer.android.com/reference/android/content/pm/PackageManager#TRUST_ALL`

Trust any Installer to provide checksums for the package.


`
public
static
final
https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/java/security/cert/Certificate>` `https://developer.android.com/reference/android/content/pm/PackageManager#TRUST_NONE`

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


| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/test/mock/MockPackageManager#MockPackageManager()() ` |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#addPackageToPreferred(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName) ` *This method is 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 `https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure an app to be responsible for a particular role and to check current role holders, see `https://developer.android.com/reference/android/app/role/RoleManager`.* |
| ` boolean` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#addPermission(android.content.pm.PermissionInfo)(https://developer.android.com/reference/android/content/pm/PermissionInfo info) ` Add a new dynamic permission to the system. |
| ` boolean` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#addPermissionAsync(android.content.pm.PermissionInfo)(https://developer.android.com/reference/android/content/pm/PermissionInfo info) ` Like `https://developer.android.com/reference/android/content/pm/PackageManager#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. |
| ` void` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#addPreferredActivity(android.content.IntentFilter,%20int,%20android.content.ComponentName[],%20android.content.ComponentName)(https://developer.android.com/reference/android/content/IntentFilter filter, int match, https://developer.android.com/reference/android/content/ComponentName set, https://developer.android.com/reference/android/content/ComponentName activity) ` *This method is 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 `https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure an app to be responsible for a particular role and to check current role holders, see `https://developer.android.com/reference/android/app/role/RoleManager`.* |
| ` boolean` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#addWhitelistedRestrictedPermission(java.lang.String,%20java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, https://developer.android.com/reference/java/lang/String permission, int whitelistFlags) ` Adds a whitelisted restricted permission for an app. |
| ` boolean` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#canRequestPackageInstalls()() ` Checks whether the calling package is allowed to request package installs through package installer. |
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#canonicalToCurrentPackageNames(java.lang.String[])(https://developer.android.com/reference/java/lang/String names) ` Map from a packages canonical name to the current name in use on the device. |
| ` int` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#checkPermission(java.lang.String,%20java.lang.String)(https://developer.android.com/reference/java/lang/String permName, https://developer.android.com/reference/java/lang/String pkgName) ` Check whether a particular package has been granted a particular permission. |
| ` int` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#checkSignatures(java.lang.String,%20java.lang.String)(https://developer.android.com/reference/java/lang/String pkg1, https://developer.android.com/reference/java/lang/String pkg2) ` Compare the signatures of two packages to determine if the same signature appears in both of them. |
| ` int` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#checkSignatures(int,%20int)(int uid1, int uid2) ` Like `https://developer.android.com/reference/android/content/pm/PackageManager#checkSignatures(java.lang.String,%20java.lang.String)`, but takes UIDs of the two packages to be checked. |
| ` void` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#clearInstantAppCookie()() ` Clears the instant application cookie for the calling app. |
| ` void` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#clearPackagePreferredActivities(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName) ` *This method is 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 `https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure an app to be responsible for a particular role and to check current role holders, see `https://developer.android.com/reference/android/app/role/RoleManager`.* |
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#currentToCanonicalPackageNames(java.lang.String[])(https://developer.android.com/reference/java/lang/String names) ` Map from the current package names in use on the device to whatever the current canonical name of that package is. |
| ` void` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#extendVerificationTimeout(int,%20int,%20long)(int id, int verificationCodeAtTimeout, long millisecondsToDelay) ` Allows a package listening to the `https://developer.android.com/reference/android/content/Intent#ACTION_PACKAGE_NEEDS_VERIFICATION` to extend the default timeout for a response and declare what action to perform after the timeout occurs. |
| ` https://developer.android.com/reference/android/graphics/drawable/Drawable` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getActivityBanner(android.content.ComponentName)(https://developer.android.com/reference/android/content/ComponentName activityName) ` Retrieve the banner associated with an activity. |
| ` https://developer.android.com/reference/android/graphics/drawable/Drawable` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getActivityBanner(android.content.Intent)(https://developer.android.com/reference/android/content/Intent intent) ` Retrieve the banner associated with an Intent. |
| ` https://developer.android.com/reference/android/graphics/drawable/Drawable` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getActivityIcon(android.content.Intent)(https://developer.android.com/reference/android/content/Intent intent) ` Retrieve the icon associated with an Intent. |
| ` https://developer.android.com/reference/android/graphics/drawable/Drawable` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getActivityIcon(android.content.ComponentName)(https://developer.android.com/reference/android/content/ComponentName activityName) ` Retrieve the icon associated with an activity. |
| ` https://developer.android.com/reference/android/content/pm/ActivityInfo` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getActivityInfo(android.content.ComponentName,%20int)(https://developer.android.com/reference/android/content/ComponentName className, int flags) ` Retrieve all of the information we know about a particular activity class. |
| ` https://developer.android.com/reference/android/graphics/drawable/Drawable` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getActivityLogo(android.content.Intent)(https://developer.android.com/reference/android/content/Intent intent) ` Retrieve the logo associated with an Intent. |
| ` https://developer.android.com/reference/android/graphics/drawable/Drawable` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getActivityLogo(android.content.ComponentName)(https://developer.android.com/reference/android/content/ComponentName activityName) ` Retrieve the logo associated with an activity. |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/IntentFilter>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getAllIntentFilters(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName) ` |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PermissionGroupInfo>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getAllPermissionGroups(int)(int flags) ` Retrieve all of the known permission groups in the system. |
| ` https://developer.android.com/reference/android/graphics/drawable/Drawable` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getApplicationBanner(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName) ` Retrieve the banner associated with an application. |
| ` https://developer.android.com/reference/android/graphics/drawable/Drawable` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getApplicationBanner(android.content.pm.ApplicationInfo)(https://developer.android.com/reference/android/content/pm/ApplicationInfo info) ` Retrieve the banner associated with an application. |
| ` int` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getApplicationEnabledSetting(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName) ` Return the enabled setting for an application. |
| ` https://developer.android.com/reference/android/graphics/drawable/Drawable` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getApplicationIcon(android.content.pm.ApplicationInfo)(https://developer.android.com/reference/android/content/pm/ApplicationInfo info) ` Retrieve the icon associated with an application. |
| ` https://developer.android.com/reference/android/graphics/drawable/Drawable` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getApplicationIcon(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName) ` Retrieve the icon associated with an application. |
| ` https://developer.android.com/reference/android/content/pm/ApplicationInfo` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getApplicationInfo(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, int flags) ` Retrieve all of the information we know about a particular package/application. |
| ` https://developer.android.com/reference/java/lang/CharSequence` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getApplicationLabel(android.content.pm.ApplicationInfo)(https://developer.android.com/reference/android/content/pm/ApplicationInfo info) ` Return the label to use for this application. |
| ` https://developer.android.com/reference/android/graphics/drawable/Drawable` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getApplicationLogo(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName) ` Retrieve the logo associated with an application. |
| ` https://developer.android.com/reference/android/graphics/drawable/Drawable` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getApplicationLogo(android.content.pm.ApplicationInfo)(https://developer.android.com/reference/android/content/pm/ApplicationInfo info) ` Retrieve the logo associated with an application. |
| ` https://developer.android.com/reference/android/content/pm/ChangedPackages` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getChangedPackages(int)(int sequenceNumber) ` Returns the names of the packages that have been changed \[eg. |
| ` int` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getComponentEnabledSetting(android.content.ComponentName)(https://developer.android.com/reference/android/content/ComponentName componentName) ` Return the enabled setting for a package component (activity, receiver, service, provider). |
| ` https://developer.android.com/reference/android/graphics/drawable/Drawable` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getDefaultActivityIcon()() ` Return the generic icon for an activity that is used when no specific icon is defined. |
| ` https://developer.android.com/reference/android/graphics/drawable/Drawable` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getDrawable(java.lang.String,%20int,%20android.content.pm.ApplicationInfo)(https://developer.android.com/reference/java/lang/String packageName, int resid, https://developer.android.com/reference/android/content/pm/ApplicationInfo appInfo) ` Retrieve an image from a package. |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ApplicationInfo>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getInstalledApplications(int)(int flags) ` Return a List of all application packages that are installed for the current user. |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PackageInfo>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getInstalledPackages(int)(int flags) ` Return a List of all packages that are installed for the current user. |
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getInstallerPackageName(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName) ` *This method was deprecated in API level 24. use `https://developer.android.com/reference/android/content/pm/PackageManager#getInstallSourceInfo(java.lang.String)` instead* |
| ` byte[]` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getInstantAppCookie()() ` Gets the instant application cookie for this app. |
| ` int` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getInstantAppCookieMaxBytes()() ` Gets the maximum size in bytes of the cookie data an instant app can store on the device. |
| ` https://developer.android.com/reference/android/content/pm/InstrumentationInfo` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getInstrumentationInfo(android.content.ComponentName,%20int)(https://developer.android.com/reference/android/content/ComponentName className, int flags) ` Retrieve all of the information we know about a particular instrumentation class. |
| ` https://developer.android.com/reference/android/content/Intent` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getLaunchIntentForPackage(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName) ` Returns a "good" intent to launch a front-door activity in a package. |
| ` https://developer.android.com/reference/android/content/Intent` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getLeanbackLaunchIntentForPackage(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName) ` Return a "good" intent to launch a front-door Leanback activity in a package, for use for example to implement an "open" button when browsing through packages. |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/MemoryBudgetInfo>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getMemoryBudgets(android.content.pm.ApplicationInfo)(https://developer.android.com/reference/android/content/pm/ApplicationInfo info) ` Return the memory budgets for the application described by the given `https://developer.android.com/reference/android/content/pm/ApplicationInfo`. |
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getNameForUid(int)(int uid) ` Retrieve the official name associated with a uid. |
| ` https://developer.android.com/reference/android/content/pm/PackageInfo` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getPackageArchiveInfo(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String archiveFilePath, int flags) ` Retrieve overall information about an application package defined in a package archive file Use `https://developer.android.com/reference/android/content/pm/PackageManager#getPackageArchiveInfo(java.lang.String,%20android.content.pm.PackageManager.PackageInfoFlags)` when long flags are needed. |
| ` int[]` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getPackageGids(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName) ` Return an array of all of the POSIX secondary group IDs that have been assigned to the given package. |
| ` int[]` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getPackageGids(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, int flags) ` Return an array of all of the POSIX secondary group IDs that have been assigned to the given package. |
| ` https://developer.android.com/reference/android/content/pm/PackageInfo` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getPackageInfo(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, int flags) ` Retrieve overall information about an application package that is installed on the system. |
| ` https://developer.android.com/reference/android/content/pm/PackageInfo` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getPackageInfo(android.content.pm.VersionedPackage,%20int)(https://developer.android.com/reference/android/content/pm/VersionedPackage versionedPackage, int flags) ` Retrieve overall information about an application package that is installed on the system. |
| ` https://developer.android.com/reference/android/content/pm/PackageInstaller` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getPackageInstaller()() ` Return interface that offers the ability to install, upgrade, and remove applications on the device. |
| ` int` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getPackageUid(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, int flags) ` Return the UID associated with the given package name. |
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getPackagesForUid(int)(int uid) ` Retrieve the names of all packages that are associated with a particular user id. |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PackageInfo>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getPackagesHoldingPermissions(java.lang.String[],%20int)(https://developer.android.com/reference/java/lang/String permissions, int flags) ` Return a List of all installed packages that are currently holding any of the given permissions. |
| ` https://developer.android.com/reference/android/content/pm/PermissionGroupInfo` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getPermissionGroupInfo(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String name, int flags) ` Retrieve all of the information we know about a particular group of permissions. |
| ` https://developer.android.com/reference/android/content/pm/PermissionInfo` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getPermissionInfo(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String name, int flags) ` Retrieve all of the information we know about a particular permission. |
| ` int` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getPreferredActivities(java.util.List<android.content.IntentFilter>,%20java.util.List<android.content.ComponentName>,%20java.lang.String)(https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/IntentFilter> outFilters, https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/ComponentName> outActivities, https://developer.android.com/reference/java/lang/String packageName) ` *This method is 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 `https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure an app to be responsible for a particular role and to check current role holders, see `https://developer.android.com/reference/android/app/role/RoleManager`.* |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PackageInfo>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getPreferredPackages(int)(int flags) ` *This method is 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 `https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure an app to be responsible for a particular role and to check current role holders, see `https://developer.android.com/reference/android/app/role/RoleManager`.* |
| ` https://developer.android.com/reference/android/content/pm/ProviderInfo` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getProviderInfo(android.content.ComponentName,%20int)(https://developer.android.com/reference/android/content/ComponentName className, int flags) ` Retrieve all of the information we know about a particular content provider class. |
| ` https://developer.android.com/reference/android/content/pm/ActivityInfo` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getReceiverInfo(android.content.ComponentName,%20int)(https://developer.android.com/reference/android/content/ComponentName className, int flags) ` Retrieve all of the information we know about a particular receiver class. |
| ` https://developer.android.com/reference/android/content/res/Resources` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getResourcesForActivity(android.content.ComponentName)(https://developer.android.com/reference/android/content/ComponentName activityName) ` Retrieve the resources associated with an activity. |
| ` https://developer.android.com/reference/android/content/res/Resources` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getResourcesForApplication(android.content.pm.ApplicationInfo)(https://developer.android.com/reference/android/content/pm/ApplicationInfo app) ` Retrieve the resources for an application. |
| ` https://developer.android.com/reference/android/content/res/Resources` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getResourcesForApplication(java.lang.String)(https://developer.android.com/reference/java/lang/String appPackageName) ` Retrieve the resources associated with an application. |
| ` https://developer.android.com/reference/android/content/pm/ServiceInfo` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getServiceInfo(android.content.ComponentName,%20int)(https://developer.android.com/reference/android/content/ComponentName className, int flags) ` Retrieve all of the information we know about a particular service class. |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/SharedLibraryInfo>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getSharedLibraries(int)(int flags) ` Get a list of shared libraries on the device. |
| ` https://developer.android.com/reference/android/content/pm/FeatureInfo` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getSystemAvailableFeatures()() ` Get a list of features that are available on the system. |
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getSystemSharedLibraryNames()() ` Get a list of shared libraries that are available on the system. |
| ` https://developer.android.com/reference/java/lang/CharSequence` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getText(java.lang.String,%20int,%20android.content.pm.ApplicationInfo)(https://developer.android.com/reference/java/lang/String packageName, int resid, https://developer.android.com/reference/android/content/pm/ApplicationInfo appInfo) ` Retrieve text from a package. |
| ` https://developer.android.com/reference/android/graphics/drawable/Drawable` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getUserBadgedDrawableForDensity(android.graphics.drawable.Drawable,%20android.os.UserHandle,%20android.graphics.Rect,%20int)(https://developer.android.com/reference/android/graphics/drawable/Drawable drawable, https://developer.android.com/reference/android/os/UserHandle user, https://developer.android.com/reference/android/graphics/Rect badgeLocation, int badgeDensity) ` If the target user is a managed profile of the calling user or the caller is itself a managed profile, then this returns a badged copy of the given drawable allowing the user to distinguish it from the original drawable. |
| ` https://developer.android.com/reference/android/graphics/drawable/Drawable` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getUserBadgedIcon(android.graphics.drawable.Drawable,%20android.os.UserHandle)(https://developer.android.com/reference/android/graphics/drawable/Drawable icon, https://developer.android.com/reference/android/os/UserHandle user) ` 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. |
| ` https://developer.android.com/reference/java/lang/CharSequence` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getUserBadgedLabel(java.lang.CharSequence,%20android.os.UserHandle)(https://developer.android.com/reference/java/lang/CharSequence label, https://developer.android.com/reference/android/os/UserHandle user) ` If the target user is a managed profile of the calling user or the caller is itself a managed profile, then this returns a copy of the label with badging for accessibility services like talkback. |
| ` https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/lang/String>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getWhitelistedRestrictedPermissions(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, int whitelistFlags) ` Gets the restricted permissions that have been whitelisted and the app is allowed to have them granted in their full form. |
| ` https://developer.android.com/reference/android/content/res/XmlResourceParser` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#getXml(java.lang.String,%20int,%20android.content.pm.ApplicationInfo)(https://developer.android.com/reference/java/lang/String packageName, int resid, https://developer.android.com/reference/android/content/pm/ApplicationInfo appInfo) ` Retrieve an XML file from a package. |
| ` boolean` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#hasSigningCertificate(int,%20byte[],%20int)(int uid, byte[] certificate, int type) ` Searches the set of signing certificates by which the package(s) for the given uid has proven to have been signed. |
| ` boolean` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#hasSigningCertificate(java.lang.String,%20byte[],%20int)(https://developer.android.com/reference/java/lang/String packageName, byte[] certificate, int type) ` Searches the set of signing certificates by which the given package has proven to have been signed. |
| ` boolean` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#hasSystemFeature(java.lang.String)(https://developer.android.com/reference/java/lang/String name) ` Check whether the given feature name is one of the available features as returned by `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()`. |
| ` boolean` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#hasSystemFeature(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String name, int version) ` Check whether the given feature name and version is one of the available features as returned by `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()`. |
| ` boolean` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#isDeviceUpgrading()() ` Returns true if the device is upgrading, such as first boot after OTA. |
| ` boolean` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#isInstantApp()() ` Gets whether this application is an instant app. |
| ` boolean` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#isInstantApp(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName) ` Gets whether the given package is an instant app. |
| ` boolean` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#isPermissionRevokedByPolicy(java.lang.String,%20java.lang.String)(https://developer.android.com/reference/java/lang/String permName, https://developer.android.com/reference/java/lang/String pkgName) ` Checks whether a particular permissions has been revoked for a package by policy. |
| ` boolean` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#isSafeMode()() ` Return whether the device has been booted into safe mode. |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ResolveInfo>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#queryBroadcastReceivers(android.content.Intent,%20int)(https://developer.android.com/reference/android/content/Intent intent, int flags) ` Retrieve all receivers that can handle a broadcast of the given intent. |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ProviderInfo>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#queryContentProviders(java.lang.String,%20int,%20int)(https://developer.android.com/reference/java/lang/String processName, int uid, int flags) ` Retrieve content provider information. |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/InstrumentationInfo>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#queryInstrumentation(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String targetPackage, int flags) ` Retrieve information about available instrumentation code. |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ResolveInfo>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#queryIntentActivities(android.content.Intent,%20int)(https://developer.android.com/reference/android/content/Intent intent, int flags) ` Retrieve all activities that can be performed for the given intent. |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ResolveInfo>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#queryIntentActivityOptions(android.content.ComponentName,%20android.content.Intent[],%20android.content.Intent,%20int)(https://developer.android.com/reference/android/content/ComponentName caller, https://developer.android.com/reference/android/content/Intent specifics, https://developer.android.com/reference/android/content/Intent intent, int flags) ` Retrieve a set of activities that should be presented to the user as similar options. |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ResolveInfo>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#queryIntentContentProviders(android.content.Intent,%20int)(https://developer.android.com/reference/android/content/Intent intent, int flags) ` Retrieve all providers that can match the given intent. |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ResolveInfo>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#queryIntentServices(android.content.Intent,%20int)(https://developer.android.com/reference/android/content/Intent intent, int flags) ` Retrieve all services that can match the given intent. |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PermissionInfo>` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#queryPermissionsByGroup(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String group, int flags) ` Query for all of the permissions associated with a particular group. |
| ` void` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#removePackageFromPreferred(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName) ` *This method is 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 `https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure an app to be responsible for a particular role and to check current role holders, see `https://developer.android.com/reference/android/app/role/RoleManager`.* |
| ` void` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#removePermission(java.lang.String)(https://developer.android.com/reference/java/lang/String name) ` Removes a permission that was previously added with `https://developer.android.com/reference/android/content/pm/PackageManager#addPermission(android.content.pm.PermissionInfo)`. |
| ` boolean` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#removeWhitelistedRestrictedPermission(java.lang.String,%20java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, https://developer.android.com/reference/java/lang/String permission, int whitelistFlags) ` Removes a whitelisted restricted permission for an app. |
| ` https://developer.android.com/reference/android/content/pm/ResolveInfo` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#resolveActivity(android.content.Intent,%20int)(https://developer.android.com/reference/android/content/Intent intent, int flags) ` Determine the best action to perform for a given Intent. |
| ` https://developer.android.com/reference/android/content/pm/ProviderInfo` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#resolveContentProvider(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String name, int flags) ` Find a single content provider by its authority. |
| ` https://developer.android.com/reference/android/content/pm/ResolveInfo` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#resolveService(android.content.Intent,%20int)(https://developer.android.com/reference/android/content/Intent intent, int flags) ` Determine the best service to handle for a given Intent. |
| ` https://developer.android.com/reference/android/content/pm/ResolveInfo` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#resolveServiceAsUser(android.content.Intent,%20int,%20int)(https://developer.android.com/reference/android/content/Intent intent, int flags, int userId) ` |
| ` void` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#setApplicationCategoryHint(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, int categoryHint) ` Provide a hint of what the `https://developer.android.com/reference/android/content/pm/ApplicationInfo#category` value should be for the given package. |
| ` void` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#setApplicationEnabledSetting(java.lang.String,%20int,%20int)(https://developer.android.com/reference/java/lang/String packageName, int newState, int flags) ` Set the enabled setting for an application This setting will override any enabled state which may have been set by the application in its manifest. |
| ` void` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#setComponentEnabledSetting(android.content.ComponentName,%20int,%20int)(https://developer.android.com/reference/android/content/ComponentName componentName, int newState, int flags) ` Set the enabled setting for a package component (activity, receiver, service, provider). |
| ` void` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#setInstallerPackageName(java.lang.String,%20java.lang.String)(https://developer.android.com/reference/java/lang/String targetPackage, https://developer.android.com/reference/java/lang/String installerPackageName) ` Change the installer associated with a given package. |
| ` boolean` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#setInstantAppCookie(byte[])(byte[] cookie) ` |
| ` void` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#updateInstantAppCookie(byte[])(byte[] cookie) ` Updates the instant application cookie for the calling app. |
| ` void` | ` https://developer.android.com/reference/android/test/mock/MockPackageManager#verifyPendingInstall(int,%20int)(int id, int verificationCode) ` Allows a package listening to the `https://developer.android.com/reference/android/content/Intent#ACTION_PACKAGE_NEEDS_VERIFICATION` to respond to the package manager. |

### Inherited methods

From class `

https://developer.android.com/reference/android/content/pm/PackageManager

` `
abstract


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#addPackageToPreferred(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

*This method was deprecated
in API level 15.
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
`https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure
an app to be responsible for a particular role and to check current role
holders, see `https://developer.android.com/reference/android/app/role/RoleManager`.*


`
abstract


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#addPermission(android.content.pm.PermissionInfo)(https://developer.android.com/reference/android/content/pm/PermissionInfo info)
`

Add a new dynamic permission to the system.


`
abstract


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#addPermissionAsync(android.content.pm.PermissionInfo)(https://developer.android.com/reference/android/content/pm/PermissionInfo info)
`

Like `https://developer.android.com/reference/android/content/pm/PackageManager#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


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#addPreferredActivity(android.content.IntentFilter,%20int,%20android.content.ComponentName[],%20android.content.ComponentName)(https://developer.android.com/reference/android/content/IntentFilter filter, int match, https://developer.android.com/reference/android/content/ComponentName set, https://developer.android.com/reference/android/content/ComponentName activity)
`

*This method was deprecated
in API level 15.
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
`https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure
an app to be responsible for a particular role and to check current role
holders, see `https://developer.android.com/reference/android/app/role/RoleManager`.*


`


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#addWhitelistedRestrictedPermission(java.lang.String,%20java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, https://developer.android.com/reference/java/lang/String permName, int whitelistFlags)
`

Adds a whitelisted restricted permission for an app.


`


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#canPackageQuery(java.lang.String,%20java.lang.String)(https://developer.android.com/reference/java/lang/String sourcePackageName, https://developer.android.com/reference/java/lang/String targetPackageName)
`

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


`


boolean[]` `
https://developer.android.com/reference/android/content/pm/PackageManager#canPackageQuery(java.lang.String,%20java.lang.String[])(https://developer.android.com/reference/java/lang/String sourcePackageName, https://developer.android.com/reference/java/lang/String targetPackageNames)
`

Same as `https://developer.android.com/reference/android/content/pm/PackageManager#canPackageQuery(java.lang.String,%20java.lang.String)` but accepts an array of target packages to
be queried.


`
abstract


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#canRequestPackageInstalls()()
`

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


`
abstract


https://developer.android.com/reference/java/lang/String` `
https://developer.android.com/reference/android/content/pm/PackageManager#canonicalToCurrentPackageNames(java.lang.String[])(https://developer.android.com/reference/java/lang/String packageNames)
`

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


`
abstract


int` `
https://developer.android.com/reference/android/content/pm/PackageManager#checkPermission(java.lang.String,%20java.lang.String)(https://developer.android.com/reference/java/lang/String permName, https://developer.android.com/reference/java/lang/String packageName)
`

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


`
abstract


int` `
https://developer.android.com/reference/android/content/pm/PackageManager#checkSignatures(java.lang.String,%20java.lang.String)(https://developer.android.com/reference/java/lang/String packageName1, https://developer.android.com/reference/java/lang/String packageName2)
`

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


`
abstract


int` `
https://developer.android.com/reference/android/content/pm/PackageManager#checkSignatures(int,%20int)(int uid1, int uid2)
`

Like `https://developer.android.com/reference/android/content/pm/PackageManager#checkSignatures(java.lang.String,%20java.lang.String)`, but takes UIDs of
the two packages to be checked.


`
abstract


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#clearInstantAppCookie()()
`

Clears the instant application cookie for the calling app.


`
abstract


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#clearPackagePreferredActivities(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

*This method was deprecated
in API level 29.
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
`https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure
an app to be responsible for a particular role and to check current role
holders, see `https://developer.android.com/reference/android/app/role/RoleManager`.*


`
abstract


https://developer.android.com/reference/java/lang/String` `
https://developer.android.com/reference/android/content/pm/PackageManager#currentToCanonicalPackageNames(java.lang.String[])(https://developer.android.com/reference/java/lang/String packageNames)
`

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


`
abstract


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#extendVerificationTimeout(int,%20int,%20long)(int id, int verificationCodeAtTimeout, long millisecondsToDelay)
`

Allows a package listening to the
`https://developer.android.com/reference/android/content/Intent#ACTION_PACKAGE_NEEDS_VERIFICATION` to extend the default timeout for a response and declare what
action to perform after the timeout occurs.


`
abstract


https://developer.android.com/reference/android/graphics/drawable/Drawable` `
https://developer.android.com/reference/android/content/pm/PackageManager#getActivityBanner(android.content.ComponentName)(https://developer.android.com/reference/android/content/ComponentName activityName)
`

Retrieve the banner associated with an activity.


`
abstract


https://developer.android.com/reference/android/graphics/drawable/Drawable` `
https://developer.android.com/reference/android/content/pm/PackageManager#getActivityBanner(android.content.Intent)(https://developer.android.com/reference/android/content/Intent intent)
`

Retrieve the banner associated with an Intent.


`
abstract


https://developer.android.com/reference/android/graphics/drawable/Drawable` `
https://developer.android.com/reference/android/content/pm/PackageManager#getActivityIcon(android.content.Intent)(https://developer.android.com/reference/android/content/Intent intent)
`

Retrieve the icon associated with an Intent.


`
abstract


https://developer.android.com/reference/android/graphics/drawable/Drawable` `
https://developer.android.com/reference/android/content/pm/PackageManager#getActivityIcon(android.content.ComponentName)(https://developer.android.com/reference/android/content/ComponentName activityName)
`

Retrieve the icon associated with an activity.


`
abstract


https://developer.android.com/reference/android/content/pm/ActivityInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getActivityInfo(android.content.ComponentName,%20int)(https://developer.android.com/reference/android/content/ComponentName component, int flags)
`

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


`


https://developer.android.com/reference/android/content/pm/ActivityInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getActivityInfo(android.content.ComponentName,%20android.content.pm.PackageManager.ComponentInfoFlags)(https://developer.android.com/reference/android/content/ComponentName component, https://developer.android.com/reference/android/content/pm/PackageManager.ComponentInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#getActivityInfo(android.content.ComponentName,%20int)`.


`
abstract


https://developer.android.com/reference/android/graphics/drawable/Drawable` `
https://developer.android.com/reference/android/content/pm/PackageManager#getActivityLogo(android.content.Intent)(https://developer.android.com/reference/android/content/Intent intent)
`

Retrieve the logo associated with an Intent.


`
abstract


https://developer.android.com/reference/android/graphics/drawable/Drawable` `
https://developer.android.com/reference/android/content/pm/PackageManager#getActivityLogo(android.content.ComponentName)(https://developer.android.com/reference/android/content/ComponentName activityName)
`

Retrieve the logo associated with an activity.


`
abstract


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PermissionGroupInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#getAllPermissionGroups(int)(int flags)
`

Retrieve all of the known permission groups in the system.


`


int` `
https://developer.android.com/reference/android/content/pm/PackageManager#getAppUidForPrivateComputeCoreUid(int)(int pccUid)
`

Maps a Private Compute Core (PCC) UID to its corresponding application UID.


`
abstract


https://developer.android.com/reference/android/graphics/drawable/Drawable` `
https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationBanner(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

Retrieve the banner associated with an application.


`
abstract


https://developer.android.com/reference/android/graphics/drawable/Drawable` `
https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationBanner(android.content.pm.ApplicationInfo)(https://developer.android.com/reference/android/content/pm/ApplicationInfo info)
`

Retrieve the banner associated with an application.


`
abstract


int` `
https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationEnabledSetting(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

Return the enabled setting for an application.


`
abstract


https://developer.android.com/reference/android/graphics/drawable/Drawable` `
https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationIcon(android.content.pm.ApplicationInfo)(https://developer.android.com/reference/android/content/pm/ApplicationInfo info)
`

Retrieve the icon associated with an application.


`
abstract


https://developer.android.com/reference/android/graphics/drawable/Drawable` `
https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationIcon(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

Retrieve the icon associated with an application.


`


https://developer.android.com/reference/android/content/pm/ApplicationInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationInfo(java.lang.String,%20android.content.pm.PackageManager.ApplicationInfoFlags)(https://developer.android.com/reference/java/lang/String packageName, https://developer.android.com/reference/android/content/pm/PackageManager.ApplicationInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationInfo(java.lang.String,%20int)`.


`
abstract


https://developer.android.com/reference/android/content/pm/ApplicationInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationInfo(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, int flags)
`

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


`
abstract


https://developer.android.com/reference/java/lang/CharSequence` `
https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationLabel(android.content.pm.ApplicationInfo)(https://developer.android.com/reference/android/content/pm/ApplicationInfo info)
`

Return the label to use for this application.


`
abstract


https://developer.android.com/reference/android/graphics/drawable/Drawable` `
https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationLogo(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

Retrieve the logo associated with an application.


`
abstract


https://developer.android.com/reference/android/graphics/drawable/Drawable` `
https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationLogo(android.content.pm.ApplicationInfo)(https://developer.android.com/reference/android/content/pm/ApplicationInfo info)
`

Retrieve the logo associated with an application.


`


https://developer.android.com/reference/android/content/pm/ArchivedPackageInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getArchivedPackage(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

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


`


https://developer.android.com/reference/java/lang/CharSequence` `
https://developer.android.com/reference/android/content/pm/PackageManager#getBackgroundPermissionOptionLabel()()
`

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


`
abstract


https://developer.android.com/reference/android/content/pm/ChangedPackages` `
https://developer.android.com/reference/android/content/pm/PackageManager#getChangedPackages(int)(int sequenceNumber)
`

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


`
abstract


int` `
https://developer.android.com/reference/android/content/pm/PackageManager#getComponentEnabledSetting(android.content.ComponentName)(https://developer.android.com/reference/android/content/ComponentName componentName)
`

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


`
abstract


https://developer.android.com/reference/android/graphics/drawable/Drawable` `
https://developer.android.com/reference/android/content/pm/PackageManager#getDefaultActivityIcon()()
`

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


`
abstract


https://developer.android.com/reference/android/graphics/drawable/Drawable` `
https://developer.android.com/reference/android/content/pm/PackageManager#getDrawable(java.lang.String,%20int,%20android.content.pm.ApplicationInfo)(https://developer.android.com/reference/java/lang/String packageName, int resid, https://developer.android.com/reference/android/content/pm/ApplicationInfo appInfo)
`

Retrieve an image from a package.


`


https://developer.android.com/reference/android/app/PendingIntent` `
https://developer.android.com/reference/android/content/pm/PackageManager#getEnableAppLockIntentForPackage(java.lang.String,%20boolean)(https://developer.android.com/reference/java/lang/String packageName, boolean enabled)
`

Returns a `https://developer.android.com/reference/android/app/PendingIntent` to launch an `https://developer.android.com/reference/android/app/Activity` that allows the caller to
set App Lock for the specified package.


`


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#getGroupOfPlatformPermission(java.lang.String,%20java.util.concurrent.Executor,%20java.util.function.Consumer<java.lang.String>)(https://developer.android.com/reference/java/lang/String permissionName, https://developer.android.com/reference/java/util/concurrent/Executor executor, https://developer.android.com/reference/java/util/function/Consumer<https://developer.android.com/reference/java/lang/String> callback)
`

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


`


https://developer.android.com/reference/android/content/pm/InstallSourceInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getInstallSourceInfo(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

Retrieves information about how a package was installed or updated.


`
abstract


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ApplicationInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#getInstalledApplications(int)(int flags)
`

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


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ApplicationInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#getInstalledApplications(android.content.pm.PackageManager.ApplicationInfoFlags)(https://developer.android.com/reference/android/content/pm/PackageManager.ApplicationInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#getInstalledApplications(int)`


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ModuleInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#getInstalledModules(int)(int flags)
`

Return a List of all modules that are installed.


`
abstract


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PackageInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#getInstalledPackages(int)(int flags)
`

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


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PackageInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#getInstalledPackages(android.content.pm.PackageManager.PackageInfoFlags)(https://developer.android.com/reference/android/content/pm/PackageManager.PackageInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#getInstalledPackages(int)`.


`
abstract


https://developer.android.com/reference/java/lang/String` `
https://developer.android.com/reference/android/content/pm/PackageManager#getInstallerPackageName(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

*This method was deprecated
in API level 30.
use `https://developer.android.com/reference/android/content/pm/PackageManager#getInstallSourceInfo(java.lang.String)` instead*


`
abstract


byte[]` `
https://developer.android.com/reference/android/content/pm/PackageManager#getInstantAppCookie()()
`

Gets the instant application cookie for this app.


`
abstract


int` `
https://developer.android.com/reference/android/content/pm/PackageManager#getInstantAppCookieMaxBytes()()
`

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


`
abstract


https://developer.android.com/reference/android/content/pm/InstrumentationInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getInstrumentationInfo(android.content.ComponentName,%20int)(https://developer.android.com/reference/android/content/ComponentName className, int flags)
`

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


`
abstract


https://developer.android.com/reference/android/content/Intent` `
https://developer.android.com/reference/android/content/pm/PackageManager#getLaunchIntentForPackage(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

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


`


https://developer.android.com/reference/android/content/IntentSender` `
https://developer.android.com/reference/android/content/pm/PackageManager#getLaunchIntentSenderForPackage(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

Returns an `https://developer.android.com/reference/android/content/IntentSender` that can be used to launch a front-door activity in a
package.


`
abstract


https://developer.android.com/reference/android/content/Intent` `
https://developer.android.com/reference/android/content/pm/PackageManager#getLeanbackLaunchIntentForPackage(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

Return a "good" intent to launch a front-door Leanback activity in a
package, for use for example to implement an "open" button when browsing
through packages.


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/MemoryBudgetInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#getMemoryBudgets(android.content.pm.ApplicationInfo)(https://developer.android.com/reference/android/content/pm/ApplicationInfo info)
`

Return the memory budgets for the application described by the given
`https://developer.android.com/reference/android/content/pm/ApplicationInfo`.


`


https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/lang/String>` `
https://developer.android.com/reference/android/content/pm/PackageManager#getMimeGroup(java.lang.String)(https://developer.android.com/reference/java/lang/String mimeGroup)
`

Gets all MIME types contained by MIME group.


`


https://developer.android.com/reference/android/content/pm/ModuleInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getModuleInfo(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, int flags)
`

Retrieve information for a particular module.


`
abstract


https://developer.android.com/reference/java/lang/String` `
https://developer.android.com/reference/android/content/pm/PackageManager#getNameForUid(int)(int uid)
`

Retrieve the official name associated with a uid.


`


https://developer.android.com/reference/android/content/pm/PackageInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPackageArchiveInfo(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String archiveFilePath, int flags)
`

Retrieve overall information about an application package defined in a
package archive file

Use `https://developer.android.com/reference/android/content/pm/PackageManager#getPackageArchiveInfo(java.lang.String,%20android.content.pm.PackageManager.PackageInfoFlags)` when long flags are needed.


`


https://developer.android.com/reference/android/content/pm/PackageInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPackageArchiveInfo(java.lang.String,%20android.content.pm.PackageManager.PackageInfoFlags)(https://developer.android.com/reference/java/lang/String archiveFilePath, https://developer.android.com/reference/android/content/pm/PackageManager.PackageInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#getPackageArchiveInfo(java.lang.String,%20int)`.


`
abstract


int[]` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPackageGids(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

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


`
abstract


int[]` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPackageGids(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, int flags)
`

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


`


int[]` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPackageGids(java.lang.String,%20android.content.pm.PackageManager.PackageInfoFlags)(https://developer.android.com/reference/java/lang/String packageName, https://developer.android.com/reference/android/content/pm/PackageManager.PackageInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#getPackageGids(java.lang.String,%20int)`.


`
abstract


https://developer.android.com/reference/android/content/pm/PackageInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPackageInfo(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, int flags)
`

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


`


https://developer.android.com/reference/android/content/pm/PackageInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPackageInfo(java.lang.String,%20android.content.pm.PackageManager.PackageInfoFlags)(https://developer.android.com/reference/java/lang/String packageName, https://developer.android.com/reference/android/content/pm/PackageManager.PackageInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#getPackageInfo(java.lang.String,%20int)`


`


https://developer.android.com/reference/android/content/pm/PackageInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPackageInfo(android.content.pm.VersionedPackage,%20android.content.pm.PackageManager.PackageInfoFlags)(https://developer.android.com/reference/android/content/pm/VersionedPackage versionedPackage, https://developer.android.com/reference/android/content/pm/PackageManager.PackageInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#getPackageInfo(android.content.pm.VersionedPackage,%20int)`


`
abstract


https://developer.android.com/reference/android/content/pm/PackageInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPackageInfo(android.content.pm.VersionedPackage,%20int)(https://developer.android.com/reference/android/content/pm/VersionedPackage versionedPackage, int flags)
`

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


`
abstract


https://developer.android.com/reference/android/content/pm/PackageInstaller` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPackageInstaller()()
`

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


`


int` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPackageUid(java.lang.String,%20android.content.pm.PackageManager.PackageInfoFlags)(https://developer.android.com/reference/java/lang/String packageName, https://developer.android.com/reference/android/content/pm/PackageManager.PackageInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#getPackageUid(java.lang.String,%20int)`.


`
abstract


int` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPackageUid(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, int flags)
`

Return the UID associated with the given package name.


`
abstract


https://developer.android.com/reference/java/lang/String` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPackagesForUid(int)(int uid)
`

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


`
abstract


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PackageInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPackagesHoldingPermissions(java.lang.String[],%20int)(https://developer.android.com/reference/java/lang/String permissions, int flags)
`

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


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PackageInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPackagesHoldingPermissions(java.lang.String[],%20android.content.pm.PackageManager.PackageInfoFlags)(https://developer.android.com/reference/java/lang/String permissions, https://developer.android.com/reference/android/content/pm/PackageManager.PackageInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#getPackagesHoldingPermissions(java.lang.String[],%20int)`.


`
abstract


https://developer.android.com/reference/android/content/pm/PermissionGroupInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPermissionGroupInfo(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String groupName, int flags)
`

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


`
abstract


https://developer.android.com/reference/android/content/pm/PermissionInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPermissionInfo(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String permName, int flags)
`

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


`


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPlatformPermissionsForGroup(java.lang.String,%20java.util.concurrent.Executor,%20java.util.function.Consumer<java.util.List<java.lang.String>>)(https://developer.android.com/reference/java/lang/String permissionGroupName, https://developer.android.com/reference/java/util/concurrent/Executor executor, https://developer.android.com/reference/java/util/function/Consumer<https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/java/lang/String>> callback)
`

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


`
abstract


int` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPreferredActivities(java.util.List<android.content.IntentFilter>,%20java.util.List<android.content.ComponentName>,%20java.lang.String)(https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/IntentFilter> outFilters, https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/ComponentName> outActivities, https://developer.android.com/reference/java/lang/String packageName)
`

*This method was deprecated
in API level 29.
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
`https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure
an app to be responsible for a particular role and to check current role
holders, see `https://developer.android.com/reference/android/app/role/RoleManager`.*


`
abstract


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PackageInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#getPreferredPackages(int)(int flags)
`

*This method was deprecated
in API level 29.
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
`https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure
an app to be responsible for a particular role and to check current role
holders, see `https://developer.android.com/reference/android/app/role/RoleManager`.*


`


https://developer.android.com/reference/android/content/pm/PackageManager.Property` `
https://developer.android.com/reference/android/content/pm/PackageManager#getProperty(java.lang.String,%20java.lang.String)(https://developer.android.com/reference/java/lang/String propertyName, https://developer.android.com/reference/java/lang/String packageName)
`

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


`


https://developer.android.com/reference/android/content/pm/PackageManager.Property` `
https://developer.android.com/reference/android/content/pm/PackageManager#getProperty(java.lang.String,%20android.content.ComponentName)(https://developer.android.com/reference/java/lang/String propertyName, https://developer.android.com/reference/android/content/ComponentName component)
`

Returns the property defined in the given component declaration.


`
abstract


https://developer.android.com/reference/android/content/pm/ProviderInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getProviderInfo(android.content.ComponentName,%20int)(https://developer.android.com/reference/android/content/ComponentName component, int flags)
`

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


`


https://developer.android.com/reference/android/content/pm/ProviderInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getProviderInfo(android.content.ComponentName,%20android.content.pm.PackageManager.ComponentInfoFlags)(https://developer.android.com/reference/android/content/ComponentName component, https://developer.android.com/reference/android/content/pm/PackageManager.ComponentInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#getProviderInfo(android.content.ComponentName,%20int)`.


`
abstract


https://developer.android.com/reference/android/content/pm/ActivityInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getReceiverInfo(android.content.ComponentName,%20int)(https://developer.android.com/reference/android/content/ComponentName component, int flags)
`

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


`


https://developer.android.com/reference/android/content/pm/ActivityInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getReceiverInfo(android.content.ComponentName,%20android.content.pm.PackageManager.ComponentInfoFlags)(https://developer.android.com/reference/android/content/ComponentName component, https://developer.android.com/reference/android/content/pm/PackageManager.ComponentInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#getReceiverInfo(android.content.ComponentName,%20int)`.


`
abstract


https://developer.android.com/reference/android/content/res/Resources` `
https://developer.android.com/reference/android/content/pm/PackageManager#getResourcesForActivity(android.content.ComponentName)(https://developer.android.com/reference/android/content/ComponentName activityName)
`

Retrieve the resources associated with an activity.


`
abstract


https://developer.android.com/reference/android/content/res/Resources` `
https://developer.android.com/reference/android/content/pm/PackageManager#getResourcesForApplication(android.content.pm.ApplicationInfo)(https://developer.android.com/reference/android/content/pm/ApplicationInfo app)
`

Retrieve the resources for an application.


`
abstract


https://developer.android.com/reference/android/content/res/Resources` `
https://developer.android.com/reference/android/content/pm/PackageManager#getResourcesForApplication(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

Retrieve the resources associated with an application.


`


https://developer.android.com/reference/android/content/res/Resources` `
https://developer.android.com/reference/android/content/pm/PackageManager#getResourcesForApplication(android.content.pm.ApplicationInfo,%20android.content.res.Configuration)(https://developer.android.com/reference/android/content/pm/ApplicationInfo app, https://developer.android.com/reference/android/content/res/Configuration configuration)
`

Retrieve the resources for an application for the provided configuration.


`


https://developer.android.com/reference/android/content/pm/ServiceInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getServiceInfo(android.content.ComponentName,%20android.content.pm.PackageManager.ComponentInfoFlags)(https://developer.android.com/reference/android/content/ComponentName component, https://developer.android.com/reference/android/content/pm/PackageManager.ComponentInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#getServiceInfo(android.content.ComponentName,%20int)`.


`
abstract


https://developer.android.com/reference/android/content/pm/ServiceInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getServiceInfo(android.content.ComponentName,%20int)(https://developer.android.com/reference/android/content/ComponentName component, int flags)
`

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


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/SharedLibraryInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#getSharedLibraries(android.content.pm.PackageManager.PackageInfoFlags)(https://developer.android.com/reference/android/content/pm/PackageManager.PackageInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#getSharedLibraries(int)`.


`
abstract


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/SharedLibraryInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#getSharedLibraries(int)(int flags)
`

Get a list of shared libraries on the device.


`


https://developer.android.com/reference/android/os/Bundle` `
https://developer.android.com/reference/android/content/pm/PackageManager#getSuspendedPackageAppExtras()()
`

Returns a `https://developer.android.com/reference/android/os/Bundle` of extras that was meant to be sent to the calling app when it was
suspended.


`


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#getSyntheticAppDetailsActivityEnabled(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

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


`
abstract


https://developer.android.com/reference/android/content/pm/FeatureInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()()
`

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


`
abstract


https://developer.android.com/reference/java/lang/String` `
https://developer.android.com/reference/android/content/pm/PackageManager#getSystemSharedLibraryNames()()
`

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


`


int` `
https://developer.android.com/reference/android/content/pm/PackageManager#getTargetSdkVersion(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
` `
abstract


https://developer.android.com/reference/java/lang/CharSequence` `
https://developer.android.com/reference/android/content/pm/PackageManager#getText(java.lang.String,%20int,%20android.content.pm.ApplicationInfo)(https://developer.android.com/reference/java/lang/String packageName, int resid, https://developer.android.com/reference/android/content/pm/ApplicationInfo appInfo)
`

Retrieve text from a package.


`
abstract


https://developer.android.com/reference/android/graphics/drawable/Drawable` `
https://developer.android.com/reference/android/content/pm/PackageManager#getUserBadgedDrawableForDensity(android.graphics.drawable.Drawable,%20android.os.UserHandle,%20android.graphics.Rect,%20int)(https://developer.android.com/reference/android/graphics/drawable/Drawable drawable, https://developer.android.com/reference/android/os/UserHandle user, https://developer.android.com/reference/android/graphics/Rect badgeLocation, int badgeDensity)
`

If the target user is a managed profile of the calling user or the caller
is itself a managed profile, then this returns a badged copy of the given
drawable allowing the user to distinguish it from the original drawable.


`
abstract


https://developer.android.com/reference/android/graphics/drawable/Drawable` `
https://developer.android.com/reference/android/content/pm/PackageManager#getUserBadgedIcon(android.graphics.drawable.Drawable,%20android.os.UserHandle)(https://developer.android.com/reference/android/graphics/drawable/Drawable drawable, https://developer.android.com/reference/android/os/UserHandle user)
`

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


https://developer.android.com/reference/java/lang/CharSequence` `
https://developer.android.com/reference/android/content/pm/PackageManager#getUserBadgedLabel(java.lang.CharSequence,%20android.os.UserHandle)(https://developer.android.com/reference/java/lang/CharSequence label, https://developer.android.com/reference/android/os/UserHandle user)
`

If the target user is a managed profile of the calling user or the caller
is itself a managed profile, then this returns a copy of the label with
badging for accessibility services like talkback.


`


static


https://developer.android.com/reference/android/content/pm/SigningInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#getVerifiedSigningInfo(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String path, int minAppSigningSchemeVersion)
`

Verifies and returns the
[app signing](https://source.android.com/docs/security/features/apksigning)
information of the file at the given path.


`


https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/lang/String>` `
https://developer.android.com/reference/android/content/pm/PackageManager#getWhitelistedRestrictedPermissions(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, int whitelistFlag)
`

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


`
abstract


https://developer.android.com/reference/android/content/res/XmlResourceParser` `
https://developer.android.com/reference/android/content/pm/PackageManager#getXml(java.lang.String,%20int,%20android.content.pm.ApplicationInfo)(https://developer.android.com/reference/java/lang/String packageName, int resid, https://developer.android.com/reference/android/content/pm/ApplicationInfo appInfo)
`

Retrieve an XML file from a package.


`


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#hasSigningCertificate(int,%20byte[],%20int)(int uid, byte[] certificate, int type)
`

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


`


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#hasSigningCertificate(java.lang.String,%20byte[],%20int)(https://developer.android.com/reference/java/lang/String packageName, byte[] certificate, int type)
`

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


`
abstract


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)(https://developer.android.com/reference/java/lang/String featureName)
`

Check whether the given feature name is one of the available features as
returned by `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()`.


`
abstract


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String featureName, int version)
`

Check whether the given feature name and version is one of the available
features as returned by `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()`.


`


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#isAppArchivable(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

Returns true if an app is archivable.


`


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#isAutoRevokeWhitelisted(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

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


`


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#isAutoRevokeWhitelisted()()
`

<br />


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


`


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#isDefaultApplicationIcon(android.graphics.drawable.Drawable)(https://developer.android.com/reference/android/graphics/drawable/Drawable drawable)
`

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


`


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#isDeviceUpgrading()()
`

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


`
abstract


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#isInstantApp()()
`

Gets whether this application is an instant app.


`
abstract


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#isInstantApp(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

Gets whether the given package is an instant app.


`


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#isPackageStopped(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

Query if an app is currently stopped.


`


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#isPackageSuspended(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

Query if an app is currently suspended.


`


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#isPackageSuspended()()
`

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


`
abstract


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#isPermissionRevokedByPolicy(java.lang.String,%20java.lang.String)(https://developer.android.com/reference/java/lang/String permName, https://developer.android.com/reference/java/lang/String packageName)
`

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


`
abstract


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#isSafeMode()()
`

Return whether the device has been booted into safe mode.


`


<T>
T` `
https://developer.android.com/reference/android/content/pm/PackageManager#parseAndroidManifest(java.io.File,%20java.util.function.Function<android.content.res.XmlResourceParser,T>)(https://developer.android.com/reference/java/io/File apkFile, https://developer.android.com/reference/java/util/function/Function<https://developer.android.com/reference/android/content/res/XmlResourceParser, T> parserFunction)
`

Retrieve AndroidManifest.xml information for the given application apk file.


`


<T>
T` `
https://developer.android.com/reference/android/content/pm/PackageManager#parseAndroidManifest(android.os.ParcelFileDescriptor,%20java.util.function.Function<android.content.res.XmlResourceParser,T>)(https://developer.android.com/reference/android/os/ParcelFileDescriptor apkFileDescriptor, https://developer.android.com/reference/java/util/function/Function<https://developer.android.com/reference/android/content/res/XmlResourceParser, T> parserFunction)
`

Similar to `https://developer.android.com/reference/android/content/pm/PackageManager#parseAndroidManifest(java.io.File,%20java.util.function.Function<android.content.res.XmlResourceParser,T>)`, but accepting a file descriptor
instead of a File object.


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PackageManager.Property>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryActivityProperty(java.lang.String)(https://developer.android.com/reference/java/lang/String propertyName)
`

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


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PackageManager.Property>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryApplicationProperty(java.lang.String)(https://developer.android.com/reference/java/lang/String propertyName)
`

Returns the property definition for all \<application\> tags.


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ResolveInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryBroadcastReceivers(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)(https://developer.android.com/reference/android/content/Intent intent, https://developer.android.com/reference/android/content/pm/PackageManager.ResolveInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#queryBroadcastReceivers(android.content.Intent,%20int)`.


`
abstract


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ResolveInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryBroadcastReceivers(android.content.Intent,%20int)(https://developer.android.com/reference/android/content/Intent intent, int flags)
`

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


`
abstract


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ProviderInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryContentProviders(java.lang.String,%20int,%20int)(https://developer.android.com/reference/java/lang/String processName, int uid, int flags)
`

Retrieve content provider information.


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ProviderInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryContentProviders(java.lang.String,%20int,%20android.content.pm.PackageManager.ComponentInfoFlags)(https://developer.android.com/reference/java/lang/String processName, int uid, https://developer.android.com/reference/android/content/pm/PackageManager.ComponentInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#queryContentProviders(java.lang.String,%20int,%20int)`.


`
abstract


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/InstrumentationInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryInstrumentation(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String targetPackage, int flags)
`

Retrieve information about available instrumentation code.


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ResolveInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)(https://developer.android.com/reference/android/content/Intent intent, https://developer.android.com/reference/android/content/pm/PackageManager.ResolveInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20int)`.


`
abstract


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ResolveInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20int)(https://developer.android.com/reference/android/content/Intent intent, int flags)
`

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


`
abstract


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ResolveInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivityOptions(android.content.ComponentName,%20android.content.Intent[],%20android.content.Intent,%20int)(https://developer.android.com/reference/android/content/ComponentName caller, https://developer.android.com/reference/android/content/Intent specifics, https://developer.android.com/reference/android/content/Intent intent, int flags)
`

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


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ResolveInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivityOptions(android.content.ComponentName,%20java.util.List<android.content.Intent>,%20android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)(https://developer.android.com/reference/android/content/ComponentName caller, https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/Intent> specifics, https://developer.android.com/reference/android/content/Intent intent, https://developer.android.com/reference/android/content/pm/PackageManager.ResolveInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivityOptions(android.content.ComponentName,%20android.content.Intent[],%20android.content.Intent,%20int)`.


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ResolveInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentContentProviders(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)(https://developer.android.com/reference/android/content/Intent intent, https://developer.android.com/reference/android/content/pm/PackageManager.ResolveInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentContentProviders(android.content.Intent,%20int)`.


`
abstract


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ResolveInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentContentProviders(android.content.Intent,%20int)(https://developer.android.com/reference/android/content/Intent intent, int flags)
`

Retrieve all providers that can match the given intent.


`
abstract


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ResolveInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentServices(android.content.Intent,%20int)(https://developer.android.com/reference/android/content/Intent intent, int flags)
`

Retrieve all services that can match the given intent.


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ResolveInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentServices(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)(https://developer.android.com/reference/android/content/Intent intent, https://developer.android.com/reference/android/content/pm/PackageManager.ResolveInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentServices(android.content.Intent,%20int)`.


`
abstract


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PermissionInfo>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryPermissionsByGroup(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String permissionGroup, int flags)
`

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


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PackageManager.Property>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryProviderProperty(java.lang.String)(https://developer.android.com/reference/java/lang/String propertyName)
`

Returns the property definition for all \<provider\> tags.


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PackageManager.Property>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryReceiverProperty(java.lang.String)(https://developer.android.com/reference/java/lang/String propertyName)
`

Returns the property definition for all \<receiver\> tags.


`


https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PackageManager.Property>` `
https://developer.android.com/reference/android/content/pm/PackageManager#queryServiceProperty(java.lang.String)(https://developer.android.com/reference/java/lang/String propertyName)
`

Returns the property definition for all \<service\> tags.


`


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#relinquishUpdateOwnership(java.lang.String)(https://developer.android.com/reference/java/lang/String targetPackage)
`

Attempt to relinquish the update ownership of the given package.


`
abstract


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#removePackageFromPreferred(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName)
`

*This method was deprecated
in API level 15.
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
`https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure
an app to be responsible for a particular role and to check current role
holders, see `https://developer.android.com/reference/android/app/role/RoleManager`.*


`
abstract


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#removePermission(java.lang.String)(https://developer.android.com/reference/java/lang/String permName)
`

Removes a permission that was previously added with
`https://developer.android.com/reference/android/content/pm/PackageManager#addPermission(android.content.pm.PermissionInfo)`.


`


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#removeWhitelistedRestrictedPermission(java.lang.String,%20java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, https://developer.android.com/reference/java/lang/String permName, int whitelistFlags)
`

Removes a whitelisted restricted permission for an app.


`


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#requestChecksums(java.lang.String,%20boolean,%20int,%20java.util.List<java.security.cert.Certificate>,%20android.content.pm.PackageManager.OnChecksumsReadyListener)(https://developer.android.com/reference/java/lang/String packageName, boolean includeSplits, int required, https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/java/security/cert/Certificate> trustedInstallers, https://developer.android.com/reference/android/content/pm/PackageManager.OnChecksumsReadyListener onChecksumsReadyListener)
`

Requests the checksums for APKs within a package.


`


https://developer.android.com/reference/android/content/pm/ResolveInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)(https://developer.android.com/reference/android/content/Intent intent, https://developer.android.com/reference/android/content/pm/PackageManager.ResolveInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20int)`.


`
abstract


https://developer.android.com/reference/android/content/pm/ResolveInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20int)(https://developer.android.com/reference/android/content/Intent intent, int flags)
`

Determine the best action to perform for a given Intent.


`


https://developer.android.com/reference/android/content/pm/ProviderInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#resolveContentProvider(java.lang.String,%20android.content.pm.PackageManager.ComponentInfoFlags)(https://developer.android.com/reference/java/lang/String authority, https://developer.android.com/reference/android/content/pm/PackageManager.ComponentInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#resolveContentProvider(java.lang.String,%20int)`.


`
abstract


https://developer.android.com/reference/android/content/pm/ProviderInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#resolveContentProvider(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String authority, int flags)
`

Find a single content provider by its authority.


`
abstract


https://developer.android.com/reference/android/content/pm/ResolveInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#resolveService(android.content.Intent,%20int)(https://developer.android.com/reference/android/content/Intent intent, int flags)
`

Determine the best service to handle for a given Intent.


`


https://developer.android.com/reference/android/content/pm/ResolveInfo` `
https://developer.android.com/reference/android/content/pm/PackageManager#resolveService(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)(https://developer.android.com/reference/android/content/Intent intent, https://developer.android.com/reference/android/content/pm/PackageManager.ResolveInfoFlags flags)
`

See `https://developer.android.com/reference/android/content/pm/PackageManager#resolveService(android.content.Intent,%20int)`.


`
abstract


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#setApplicationCategoryHint(java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String packageName, int categoryHint)
`

Provide a hint of what the `https://developer.android.com/reference/android/content/pm/ApplicationInfo#category` value should
be for the given package.


`
abstract


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#setApplicationEnabledSetting(java.lang.String,%20int,%20int)(https://developer.android.com/reference/java/lang/String packageName, int newState, int flags)
`

Set the enabled setting for an application
This setting will override any enabled state which may have been set by the application in
its manifest.


`


boolean` `
https://developer.android.com/reference/android/content/pm/PackageManager#setAutoRevokeWhitelisted(java.lang.String,%20boolean)(https://developer.android.com/reference/java/lang/String packageName, boolean whitelisted)
`

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


`
abstract


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#setComponentEnabledSetting(android.content.ComponentName,%20int,%20int)(https://developer.android.com/reference/android/content/ComponentName componentName, int newState, int flags)
`

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


`


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#setComponentEnabledSettings(java.util.List<android.content.pm.PackageManager.ComponentEnabledSetting>)(https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PackageManager.ComponentEnabledSetting> settings)
`

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


`
abstract


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#setInstallerPackageName(java.lang.String,%20java.lang.String)(https://developer.android.com/reference/java/lang/String targetPackage, https://developer.android.com/reference/java/lang/String installerPackageName)
`

Change the installer associated with a given package.


`


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#setMimeGroup(java.lang.String,%20java.util.Set<java.lang.String>)(https://developer.android.com/reference/java/lang/String mimeGroup, https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/lang/String> mimeTypes)
`

Sets MIME group's MIME types.


`
abstract


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#updateInstantAppCookie(byte[])(byte[] cookie)
`

Updates the instant application cookie for the calling app.


`
abstract


void` `
https://developer.android.com/reference/android/content/pm/PackageManager#verifyPendingInstall(int,%20int)(int id, int verificationCode)
`

Allows a package listening to the
`https://developer.android.com/reference/android/content/Intent#ACTION_PACKAGE_NEEDS_VERIFICATION` to respond to the package manager.


From class `

https://developer.android.com/reference/java/lang/Object

` `


https://developer.android.com/reference/java/lang/Object` `
https://developer.android.com/reference/java/lang/Object#clone()()
`

Creates and returns a copy of this object.


`


boolean` `
https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj)
`

Indicates whether some other object is "equal to" this one.


`


void` `
https://developer.android.com/reference/java/lang/Object#finalize()()
`

Called by the garbage collector on an object when garbage collection
determines that there are no more references to the object.


`


final

https://developer.android.com/reference/java/lang/Class<?>` `
https://developer.android.com/reference/java/lang/Object#getClass()()
`

Returns the runtime class of this `Object`.


`


int` `
https://developer.android.com/reference/java/lang/Object#hashCode()()
`

Returns a hash code value for the object.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#notify()()
`

Wakes up a single thread that is waiting on this object's
monitor.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#notifyAll()()
`

Wakes up all threads that are waiting on this object's monitor.


`


https://developer.android.com/reference/java/lang/String` `
https://developer.android.com/reference/java/lang/Object#toString()()
`

Returns a string representation of the object.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos)
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*, or until a
certain amount of real time has elapsed.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis)
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*, or until a
certain amount of real time has elapsed.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait()()
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*.


## Public constructors

### MockPackageManager

```
public MockPackageManager ()
```

<br />

<br />

## Public methods

### addPackageToPreferred

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void addPackageToPreferred (String packageName)
```


**This method is 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
`https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure
an app to be responsible for a particular role and to check current role
holders, see `https://developer.android.com/reference/android/app/role/RoleManager`.

<br />

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: This value cannot be `null`. <br /> |

### addPermission

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean addPermission (PermissionInfo info)
```

Add a new dynamic permission to the system. For this to work, your
package must have defined a permission tree through the
`https://developer.android.com/reference/android/R.styleable#AndroidManifestPermissionTree` 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.

<br />

| Parameters ||
|---|---|
| `info` | `PermissionInfo`: Description of the permission to be added. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `boolean` | Returns true if a new permission was created, false if an existing one was updated. <br /> |

### addPermissionAsync

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean addPermissionAsync (PermissionInfo info)
```

Like `https://developer.android.com/reference/android/content/pm/PackageManager#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.

<br />

| Parameters ||
|---|---|
| `info` | `PermissionInfo`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `boolean` | <br /> |

### addPreferredActivity

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void addPreferredActivity (IntentFilter filter, 
                int match, 
                ComponentName[] set, 
                ComponentName activity)
```


**This method is 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
`https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure
an app to be responsible for a particular role and to check current role
holders, see `https://developer.android.com/reference/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
`https://developer.android.com/reference/android/content/Context#startActivity(android.content.Intent)` finds
multiple matching activities and also matches the given filter.

<br />

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

### addWhitelistedRestrictedPermission

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean addWhitelistedRestrictedPermission (String packageName, 
                String permission, 
                int whitelistFlags)
```

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 `https://developer.android.com/reference/android/content/pm/PermissionInfo#FLAG_HARD_RESTRICTED` or `https://developer.android.com/reference/android/content/pm/PermissionInfo#FLAG_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.

<br />

There are four whitelists:
1. one for cases where the system permission policy whitelists a permission This list corresponds to the `https://developer.android.com/reference/android/content/pm/PackageManager#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 `https://developer.android.com/reference/android/content/pm/PackageManager#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 `https://developer.android.com/reference/android/content/pm/PackageManager#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".

<br />

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: This value cannot be `null`. <br /> |
| `permission` | `String`: This value cannot be `null`. <br /> |
| `whitelistFlags` | `int`: Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/content/pm/PackageManager#FLAG_PERMISSION_WHITELIST_SYSTEM` - `https://developer.android.com/reference/android/content/pm/PackageManager#FLAG_PERMISSION_WHITELIST_INSTALLER` - `https://developer.android.com/reference/android/content/pm/PackageManager#FLAG_PERMISSION_WHITELIST_UPGRADE` |

| Returns ||
|---|---|
| `boolean` | Whether the permission was added to the whitelist. <br /> |

### canRequestPackageInstalls

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean canRequestPackageInstalls ()
```

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 `https://developer.android.com/reference/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
`https://developer.android.com/reference/android/Manifest.permission#REQUEST_INSTALL_PACKAGES` in order to use this API.

<br />

| Returns ||
|---|---|
| `boolean` | true if the calling package is trusted by the user to request install packages on the device, false otherwise. <br /> |

### canonicalToCurrentPackageNames

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public String[] canonicalToCurrentPackageNames (String[] names)
```

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

<br />

| Parameters ||
|---|---|
| `names` | `String`: Array of new names to be mapped. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | Returns an array of the same size as the original, containing the current name for each package. <br /> |

### checkPermission

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int checkPermission (String permName, 
                String pkgName)
```

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
`https://developer.android.com/reference/android/content/Context#checkPermission(java.lang.String,%20int,%20int)` APIs instead.

<br />

| Parameters ||
|---|---|
| `permName` | `String`: The name of the permission you are checking for. This value cannot be `null`. <br /> |
| `pkgName` | `String`: The name of the package you are checking against. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `int` | If the package has the permission, PERMISSION_GRANTED is returned. If it does not have the permission, PERMISSION_DENIED is returned. Value is one of the following: - `https://developer.android.com/reference/android/content/pm/PackageManager#PERMISSION_GRANTED` - `https://developer.android.com/reference/android/content/pm/PackageManager#PERMISSION_DENIED` |

### checkSignatures

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int checkSignatures (String pkg1, 
                String pkg2)
```

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

<br />

| Parameters ||
|---|---|
| `pkg1` | `String`: First package name whose signature will be compared. This value cannot be `null`. <br /> |
| `pkg2` | `String`: Second package name whose signature will be compared. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `int` | Returns an integer indicating whether all signatures on the two packages match. The value is \>= 0 (`https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_MATCH`) if all signatures match or \< 0 if there is not a match (`https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_NO_MATCH` or `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_UNKNOWN_PACKAGE`). Value is one of the following: - `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_MATCH` - `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_NEITHER_SIGNED` - `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_FIRST_NOT_SIGNED` - `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_SECOND_NOT_SIGNED` - `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_NO_MATCH` - `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_UNKNOWN_PACKAGE` |

### checkSignatures

Added in [API level 5](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int checkSignatures (int uid1, 
                int uid2)
```

Like `https://developer.android.com/reference/android/content/pm/PackageManager#checkSignatures(java.lang.String,%20java.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.

<br />

| Parameters ||
|---|---|
| `uid1` | `int`: First UID whose signature will be compared. <br /> |
| `uid2` | `int`: Second UID whose signature will be compared. <br /> |

| Returns ||
|---|---|
| `int` | Returns an integer indicating whether all signatures on the two packages match. The value is \>= 0 (`https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_MATCH`) if all signatures match or \< 0 if there is not a match (`https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_NO_MATCH` or `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_UNKNOWN_PACKAGE`). Value is one of the following: - `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_MATCH` - `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_NEITHER_SIGNED` - `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_FIRST_NOT_SIGNED` - `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_SECOND_NOT_SIGNED` - `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_NO_MATCH` - `https://developer.android.com/reference/android/content/pm/PackageManager#SIGNATURE_UNKNOWN_PACKAGE` |

### clearInstantAppCookie

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void clearInstantAppCookie ()
```

Clears the instant application cookie for the calling app.

<br />

### clearPackagePreferredActivities

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void clearPackagePreferredActivities (String packageName)
```


**This method is 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
`https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure
an app to be responsible for a particular role and to check current role
holders, see `https://developer.android.com/reference/android/app/role/RoleManager`.

Remove all preferred activity mappings, previously added with
`https://developer.android.com/reference/android/content/pm/PackageManager#addPreferredActivity(android.content.IntentFilter,%20int,%20android.content.ComponentName[],%20android.content.ComponentName)`, from the
system whose activities are implemented in the given package name.
An application can only clear its own package(s).

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: The name of the package whose preferred activity mappings are to be removed. This value cannot be `null`. <br /> |

### currentToCanonicalPackageNames

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public String[] currentToCanonicalPackageNames (String[] names)
```

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

<br />

| Parameters ||
|---|---|
| `names` | `String`: Array of current names to be mapped. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | Returns an array of the same size as the original, containing the canonical name for each package. <br /> |

### extendVerificationTimeout

Added in [API level 17](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void extendVerificationTimeout (int id, 
                int verificationCodeAtTimeout, 
                long millisecondsToDelay)
```

Allows a package listening to the
`https://developer.android.com/reference/android/content/Intent#ACTION_PACKAGE_NEEDS_VERIFICATION` 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
`https://developer.android.com/reference/android/content/pm/PackageManager#VERIFICATION_ALLOW` or
`https://developer.android.com/reference/android/content/pm/PackageManager#VERIFICATION_REJECT`.

This method can be called multiple times, but the total amount of time extension time will
be limited to `https://developer.android.com/reference/android/content/pm/PackageManager#MAXIMUM_VERIFICATION_TIMEOUT`. If the method is called
multiple times with different `verificationCodeAtTimeout`, then previous
`verificationCodeAtTimeout` will be ignored and only the latest one will take effect.
If this method is called after calling `https://developer.android.com/reference/android/content/pm/PackageManager#verifyPendingInstall(int,%20int)`, it may
nullify the result set by verifyPendingInstall.

<br />

| Parameters ||
|---|---|
| `id` | `int`: pending package identifier as passed via the `https://developer.android.com/reference/android/content/pm/PackageManager#EXTRA_VERIFICATION_ID` Intent extra. <br /> |
| `verificationCodeAtTimeout` | `int`: either `https://developer.android.com/reference/android/content/pm/PackageManager#VERIFICATION_ALLOW` or `https://developer.android.com/reference/android/content/pm/PackageManager#VERIFICATION_REJECT`. If `verificationCodeAtTimeout` is neither `https://developer.android.com/reference/android/content/pm/PackageManager#VERIFICATION_ALLOW` or `https://developer.android.com/reference/android/content/pm/PackageManager#VERIFICATION_REJECT`, then `verificationCodeAtTimeout` will default to `https://developer.android.com/reference/android/content/pm/PackageManager#VERIFICATION_REJECT`. <br /> |
| `millisecondsToDelay` | `long`: the amount of time requested for the timeout. Must be positive and less than `https://developer.android.com/reference/android/content/pm/PackageManager#MAXIMUM_VERIFICATION_TIMEOUT`. If `millisecondsToDelay` is out of bounds, `millisecondsToDelay` will be set to the closest in bounds value; namely, 0 or `https://developer.android.com/reference/android/content/pm/PackageManager#MAXIMUM_VERIFICATION_TIMEOUT`. <br /> |

### getActivityBanner

Added in [API level 20](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Drawable getActivityBanner (ComponentName activityName)
```

Retrieve the banner associated with an activity. Given the full name of
an activity, retrieves the information about it and calls
`https://developer.android.com/reference/android/content/pm/PackageItemInfo#loadIcon(android.content.pm.PackageManager)` to return its
banner. If the activity cannot be found, NameNotFoundException is thrown.

The returned drawable is subject to the same size capping limits as described
in `https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationIcon(android.content.pm.ApplicationInfo)`.

<br />

<br />

| Parameters ||
|---|---|
| `activityName` | `ComponentName`: Name of the activity whose banner is to be retrieved. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable` | Returns the image of the banner, or null if the activity has no banner specified. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getActivityBanner

Added in [API level 20](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Drawable getActivityBanner (Intent intent)
```

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

<br />

| Parameters ||
|---|---|
| `intent` | `Intent`: The intent for which you would like to retrieve a banner. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable` | Returns the image of the banner, or null if the activity has no banner specified. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getActivityIcon

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Drawable getActivityIcon (Intent intent)
```

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

<br />

| Parameters ||
|---|---|
| `intent` | `Intent`: The intent for which you would like to retrieve an icon. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable` | Returns the image of the icon, or the default activity icon if it could not be found. Does not return null. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getActivityIcon

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Drawable getActivityIcon (ComponentName activityName)
```

Retrieve the icon associated with an activity. Given the full name of
an activity, retrieves the information about it and calls
`https://developer.android.com/reference/android/content/pm/PackageItemInfo#loadIcon(android.content.pm.PackageManager)` to return its icon.
If the activity cannot be found, NameNotFoundException is thrown.

The returned drawable is subject to the same size capping limits as described
in `https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationIcon(android.content.pm.ApplicationInfo)`.

<br />

<br />

| Parameters ||
|---|---|
| `activityName` | `ComponentName`: Name of the activity whose icon is to be retrieved. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable` | Returns the image of the icon, or the default activity icon if it could not be found. Does not return null. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getActivityInfo

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ActivityInfo getActivityInfo (ComponentName className, 
                int flags)
```

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

Use `https://developer.android.com/reference/android/content/pm/PackageManager#getActivityInfo(android.content.ComponentName,%20android.content.pm.PackageManager.ComponentInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `className` | `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`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/ActivityInfo` | An `https://developer.android.com/reference/android/content/pm/ActivityInfo` containing information about the activity. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getActivityLogo

Added in [API level 9](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Drawable getActivityLogo (Intent intent)
```

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

<br />

| Parameters ||
|---|---|
| `intent` | `Intent`: The intent for which you would like to retrieve a logo. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable` | Returns the image of the logo, or null if the activity has no logo specified. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getActivityLogo

Added in [API level 9](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Drawable getActivityLogo (ComponentName activityName)
```

Retrieve the logo associated with an activity. Given the full name of an
activity, retrieves the information about it and calls
`https://developer.android.com/reference/android/content/pm/PackageItemInfo#loadLogo(android.content.pm.PackageManager)` to return its
logo. If the activity cannot be found, NameNotFoundException is thrown.

The returned drawable is subject to the same size capping limits as described
in `https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationIcon(android.content.pm.ApplicationInfo)`.

<br />

<br />

| Parameters ||
|---|---|
| `activityName` | `ComponentName`: Name of the activity whose logo is to be retrieved. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable` | Returns the image of the logo or null if the activity has no logo specified. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getAllIntentFilters

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public List<IntentFilter> getAllIntentFilters (String packageName)
```

<br />

<br />

| Parameters ||
|---|---|
| `packageName` | `String` <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/IntentFilter>` | <br /> |

### getAllPermissionGroups

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public List<PermissionGroupInfo> getAllPermissionGroups (int flags)
```

Retrieve all of the known permission groups in the system.

<br />

| Parameters ||
|---|---|
| `flags` | `int`: Additional option flags to modify the data returned. Value is either `0` or - `https://developer.android.com/reference/android/content/pm/PackageManager#GET_META_DATA` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PermissionGroupInfo>` | Returns a list of `https://developer.android.com/reference/android/content/pm/PermissionGroupInfo` containing information about all of the known permission groups. This value cannot be `null`. <br /> |

### getApplicationBanner

Added in [API level 20](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Drawable getApplicationBanner (String packageName)
```

Retrieve the banner associated with an application. Given the name of the
application's package, retrieves the information about it and calls
getApplicationIcon() to return its banner. If the application cannot be
found, NameNotFoundException is thrown.

The returned drawable is subject to the same size capping limits as described
in `https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationIcon(android.content.pm.ApplicationInfo)`.

<br />

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: Name of the package whose application banner is to be retrieved. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable` | Returns the image of the banner or null if the application has no banner specified. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getApplicationBanner

Added in [API level 20](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Drawable getApplicationBanner (ApplicationInfo info)
```

Retrieve the banner associated with an application.

<br />

| Parameters ||
|---|---|
| `info` | `ApplicationInfo`: Information about application being queried. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable` | Returns the image of the banner or null if the application has no banner specified. <br /> |

### getApplicationEnabledSetting

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getApplicationEnabledSetting (String packageName)
```

Return the enabled setting for an application. This returns
the last value set by
`https://developer.android.com/reference/android/content/pm/PackageManager#setApplicationEnabledSetting(java.lang.String,%20int,%20int)`; in most
cases this value will be `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DEFAULT` since
the value originally specified in the manifest has not been modified.

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: The package name of the application to retrieve. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `int` | Returns the current enabled state for the application. Value is one of the following: - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DEFAULT` - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_ENABLED` - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DISABLED` - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DISABLED_USER` - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED` |

### getApplicationIcon

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Drawable getApplicationIcon (ApplicationInfo info)
```

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

Note: The returned drawable's dimensions are capped to a maximum size of
`2048 x 2048` pixels. If the resource's intrinsic dimensions exceed this limit,
it will be downsampled automatically, preserving its aspect ratio.

<br />

<br />

| Parameters ||
|---|---|
| `info` | `ApplicationInfo`: Information about application being queried. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable` | Returns the image of the icon, or the default application icon if it could not be found. <br /> |

### getApplicationIcon

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Drawable getApplicationIcon (String packageName)
```

Retrieve the icon associated with an application. Given the name of the
application's package, retrieves the information about it and calls
getApplicationIcon() to return its icon. If the application cannot be
found, NameNotFoundException is thrown.

Note: The returned drawable's dimensions are capped to a maximum size of
`2048 x 2048` pixels. If the resource's intrinsic dimensions exceed this limit,
it will be downsampled automatically, preserving its aspect ratio.

<br />

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: Name of the package whose application icon is to be retrieved. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable` | Returns the image of the icon, or the default application icon if it could not be found. Does not return null. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getApplicationInfo

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ApplicationInfo getApplicationInfo (String packageName, 
                int flags)
```

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

Use `https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationInfo(java.lang.String,%20android.content.pm.PackageManager.ApplicationInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: The full name (i.e. com.google.apps.contacts) of an application. This value cannot be `null`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/ApplicationInfo` | An `https://developer.android.com/reference/android/content/pm/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`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getApplicationLabel

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public CharSequence getApplicationLabel (ApplicationInfo info)
```

Return the label to use for this application.

<br />

| Parameters ||
|---|---|
| `info` | `ApplicationInfo`: The `https://developer.android.com/reference/android/content/pm/ApplicationInfo` of the application to get the label of. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/CharSequence` | Returns a `https://developer.android.com/reference/java/lang/CharSequence` containing the label associated with this application, or its name the item does not have a label. This value cannot be `null`. <br /> |

### getApplicationLogo

Added in [API level 9](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Drawable getApplicationLogo (String packageName)
```

Retrieve the logo associated with an application. Given the name of the
application's package, retrieves the information about it and calls
getApplicationLogo() to return its logo. If the application cannot be
found, NameNotFoundException is thrown.

The returned drawable is subject to the same size capping limits as described
in `https://developer.android.com/reference/android/content/pm/PackageManager#getApplicationIcon(android.content.pm.ApplicationInfo)`.

<br />

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: Name of the package whose application logo is to be retrieved. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable` | Returns the image of the logo, or null if no application logo has been specified. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getApplicationLogo

Added in [API level 9](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Drawable getApplicationLogo (ApplicationInfo info)
```

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

<br />

| Parameters ||
|---|---|
| `info` | `ApplicationInfo`: Information about application being queried. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable` | Returns the image of the logo, or null if no logo is specified by the application. <br /> |

### getChangedPackages

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ChangedPackages getChangedPackages (int sequenceNumber)
```

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.

<br />

| Parameters ||
|---|---|
| `sequenceNumber` | `int`: The first sequence number for which to retrieve package changes. Value is 0 or greater <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/ChangedPackages` | <br /> |

### getComponentEnabledSetting

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getComponentEnabledSetting (ComponentName componentName)
```

Return the enabled setting for a package component (activity,
receiver, service, provider). This returns the last value set by
`https://developer.android.com/reference/android/content/pm/PackageManager#setComponentEnabledSetting(android.content.ComponentName,%20int,%20int)`; in most
cases this value will be `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DEFAULT` since
the value originally specified in the manifest has not been modified.

<br />

| Parameters ||
|---|---|
| `componentName` | `ComponentName`: The component to retrieve. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `int` | Returns the current enabled state for the component. Value is one of the following: - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DEFAULT` - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_ENABLED` - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DISABLED` - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DISABLED_USER` - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED` |

### getDefaultActivityIcon

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Drawable getDefaultActivityIcon ()
```

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

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable` | Drawable Image of the icon. This value cannot be `null`. <br /> |

### getDrawable

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Drawable getDrawable (String packageName, 
                int resid, 
                ApplicationInfo appInfo)
```

Retrieve an image from a package. This is a low-level API used by
the various package manager info structures (such as
`https://developer.android.com/reference/android/content/pm/ComponentInfo` to implement retrieval of their associated
icon.

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: The name of the package that this icon is coming from. Cannot be null. <br /> |
| `resid` | `int`: The resource identifier of the desired image. Cannot be 0. <br /> |
| `appInfo` | `ApplicationInfo`: Overall information about <var translate="no">packageName</var>. 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. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable` | Returns a Drawable holding the requested image. Returns null if an image could not be found for any reason. <br /> |

### getInstalledApplications

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public List<ApplicationInfo> getInstalledApplications (int flags)
```

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 `https://developer.android.com/reference/android/content/pm/PackageManager#getInstalledApplications(android.content.pm.PackageManager.ApplicationInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/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`. <br /> |

### getInstalledPackages

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public List<PackageInfo> getInstalledPackages (int flags)
```

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

Use `https://developer.android.com/reference/android/content/pm/PackageManager#getInstalledPackages(android.content.pm.PackageManager.PackageInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/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`. <br /> |

### getInstallerPackageName

Added in [API level 5](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public String getInstallerPackageName (String packageName)
```


**This method was deprecated
in API level 24.**   

use `https://developer.android.com/reference/android/content/pm/PackageManager#getInstallSourceInfo(java.lang.String)` instead

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

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: The name of the package to query. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | This value may be `null`. <br /> |

### getInstantAppCookie

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public byte[] getInstantAppCookie ()
```

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.

<br />

| Returns ||
|---|---|
| `byte[]` | The cookie. This value cannot be `null`. <br /> |

### getInstantAppCookieMaxBytes

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getInstantAppCookieMaxBytes ()
```

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

<br />

| Returns ||
|---|---|
| `int` | The max cookie size in bytes. <br /> |

### getInstrumentationInfo

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public InstrumentationInfo getInstrumentationInfo (ComponentName className, 
                int flags)
```

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

<br />

| Parameters ||
|---|---|
| `className` | `ComponentName`: The full name (i.e. com.google.apps.contacts.InstrumentList) of an Instrumentation class. This value cannot be `null`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. Value is either `0` or - `https://developer.android.com/reference/android/content/pm/PackageManager#GET_META_DATA` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/InstrumentationInfo` | An `https://developer.android.com/reference/android/content/pm/InstrumentationInfo` object containing information about the instrumentation. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getLaunchIntentForPackage

Added in [API level 3](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Intent getLaunchIntentForPackage (String packageName)
```

Returns a "good" intent to launch a front-door activity in a package.
This is used, for example, to implement an "open" button when browsing
through packages. The current implementation looks first for a main
activity in the category `https://developer.android.com/reference/android/content/Intent#CATEGORY_INFO`, and next for a
main activity in the category `https://developer.android.com/reference/android/content/Intent#CATEGORY_LAUNCHER`. Returns
`null` if neither are found.

Consider using `https://developer.android.com/reference/android/content/pm/PackageManager#getLaunchIntentSenderForPackage(java.lang.String)` if
the caller is not allowed to query for the `packageName`.

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: The name of the package to inspect. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/Intent` | A fully-qualified `https://developer.android.com/reference/android/content/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. <br /> |

### getLeanbackLaunchIntentForPackage

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Intent getLeanbackLaunchIntentForPackage (String packageName)
```

Return a "good" intent to launch a front-door Leanback activity in a
package, for use for example to implement an "open" button when browsing
through packages. The current implementation will look for a main
activity in the category `https://developer.android.com/reference/android/content/Intent#CATEGORY_LEANBACK_LAUNCHER`, or
return null if no main leanback activities are found.

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: The name of the package to inspect. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/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. <br /> |

### getMemoryBudgets

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public List<MemoryBudgetInfo> getMemoryBudgets (ApplicationInfo info)
```

Return the memory budgets for the application described by the given
`https://developer.android.com/reference/android/content/pm/ApplicationInfo`.

<br />

| Parameters ||
|---|---|
| `info` | `ApplicationInfo`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/MemoryBudgetInfo>` | This value cannot be `null`. <br /> |

### getNameForUid

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public String getNameForUid (int uid)
```

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.

<br />

| Parameters ||
|---|---|
| `uid` | `int`: The uid for which you would like to retrieve a name. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | Returns a unique name for the given uid, or null if the uid is not currently assigned. <br /> |

### getPackageArchiveInfo

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public PackageInfo getPackageArchiveInfo (String archiveFilePath, 
                int flags)
```

Retrieve overall information about an application package defined in a
package archive file

Use `https://developer.android.com/reference/android/content/pm/PackageManager#getPackageArchiveInfo(java.lang.String,%20android.content.pm.PackageManager.PackageInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `archiveFilePath` | `String`: The path to the archive file. This value cannot be `null`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageInfo` | A PackageInfo object containing information about the package archive. If the package could not be parsed, returns null. <br /> |

### getPackageGids

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int[] getPackageGids (String packageName)
```

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
`https://developer.android.com/reference/android/os/UserHandle` on the same device.

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: The full name (i.e. com.google.apps.contacts) of the desired package. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `int[]` | Returns an int array of the assigned GIDs, or null if there are none. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getPackageGids

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int[] getPackageGids (String packageName, 
                int flags)
```

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
`https://developer.android.com/reference/android/os/UserHandle` on the same device.

Use `https://developer.android.com/reference/android/content/pm/PackageManager#getPackageGids(java.lang.String,%20android.content.pm.PackageManager.PackageInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: The full name (i.e. com.google.apps.contacts) of the desired package. This value cannot be `null`. <br /> |
| `flags` | `int` <br /> |

| Returns ||
|---|---|
| `int[]` | Returns an int array of the assigned gids, or null if there are none. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getPackageInfo

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public PackageInfo getPackageInfo (String packageName, 
                int flags)
```

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

Use `https://developer.android.com/reference/android/content/pm/PackageManager#getPackageInfo(java.lang.String,%20android.content.pm.PackageManager.PackageInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: The full name (i.e. com.google.apps.contacts) of the desired package. This value cannot be `null`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/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). <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getPackageInfo

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public PackageInfo getPackageInfo (VersionedPackage versionedPackage, 
                int flags)
```

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
`https://developer.android.com/reference/android/content/pm/PackageManager#VERSION_CODE_HIGHEST` in the `https://developer.android.com/reference/android/content/pm/VersionedPackage`
constructor.

Use `https://developer.android.com/reference/android/content/pm/PackageManager#getPackageInfo(android.content.pm.VersionedPackage,%20android.content.pm.PackageManager.PackageInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `versionedPackage` | `VersionedPackage`: The versioned package for which to query. This value cannot be `null`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/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). <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getPackageInstaller

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public PackageInstaller getPackageInstaller ()
```

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

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageInstaller` | This value cannot be `null`. <br /> |

### getPackageUid

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getPackageUid (String packageName, 
                int flags)
```

Return the UID associated with the given package name.


Note that the same package will have different UIDs under different
`https://developer.android.com/reference/android/os/UserHandle` on the same device.

Use `https://developer.android.com/reference/android/content/pm/PackageManager#getPackageUid(java.lang.String,%20android.content.pm.PackageManager.PackageInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: The full name (i.e. com.google.apps.contacts) of the desired package. This value cannot be `null`. <br /> |
| `flags` | `int` <br /> |

| Returns ||
|---|---|
| `int` | Returns an integer UID who owns the given package name. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getPackagesForUid

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public String[] getPackagesForUid (int uid)
```

Retrieve the names of all packages that are associated with a particular
user id. In most cases, this will be a single package name, the package
that has been assigned that user id. Where there are multiple packages
sharing the same user id through the "sharedUserId" mechanism, all
packages with that id will be returned.

<br />

| Parameters ||
|---|---|
| `uid` | `int`: The user id for which you would like to retrieve the associated packages. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/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. <br /> |

### getPackagesHoldingPermissions

Added in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public List<PackageInfo> getPackagesHoldingPermissions (String[] permissions, 
                int flags)
```

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

Use `https://developer.android.com/reference/android/content/pm/PackageManager#getPackagesHoldingPermissions(java.lang.String[],%20android.content.pm.PackageManager.PackageInfoFlags)` when long flags are
needed.

<br />

| Parameters ||
|---|---|
| `permissions` | `String`: This value cannot be `null`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/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`. <br /> |

### getPermissionGroupInfo

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public PermissionGroupInfo getPermissionGroupInfo (String name, 
                int flags)
```

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

<br />

| Parameters ||
|---|---|
| `name` | `String`: The fully qualified name (i.e. com.google.permission_group.APPS) of the permission you are interested in. This value cannot be `null`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. Value is either `0` or - `https://developer.android.com/reference/android/content/pm/PackageManager#GET_META_DATA` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PermissionGroupInfo` | Returns a `https://developer.android.com/reference/android/content/pm/PermissionGroupInfo` containing information about the permission. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getPermissionInfo

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public PermissionInfo getPermissionInfo (String name, 
                int flags)
```

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

<br />

| Parameters ||
|---|---|
| `name` | `String`: The fully qualified name (i.e. com.google.permission.LOGIN) of the permission you are interested in. This value cannot be `null`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. Value is either `0` or - `https://developer.android.com/reference/android/content/pm/PackageManager#GET_META_DATA` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PermissionInfo` | Returns a `https://developer.android.com/reference/android/content/pm/PermissionInfo` containing information about the permission. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getPreferredActivities

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getPreferredActivities (List<IntentFilter> outFilters, 
                List<ComponentName> outActivities, 
                String packageName)
```


**This method is 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
`https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure
an app to be responsible for a particular role and to check current role
holders, see `https://developer.android.com/reference/android/app/role/RoleManager`.

Retrieve all preferred activities, previously added with
`https://developer.android.com/reference/android/content/pm/PackageManager#addPreferredActivity(android.content.IntentFilter,%20int,%20android.content.ComponentName[],%20android.content.ComponentName)`, that are
currently registered with the system.

<br />

| Parameters ||
|---|---|
| `outFilters` | `List`: A required list in which to place the filters of all of the preferred activities. This value cannot be `null`. <br /> |
| `outActivities` | `List`: A required list in which to place the component names of all of the preferred activities. This value cannot be `null`. <br /> |
| `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. <br /> |

| Returns ||
|---|---|
| `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. <br /> |

### getPreferredPackages

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public List<PackageInfo> getPreferredPackages (int flags)
```


**This method is 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
`https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure
an app to be responsible for a particular role and to check current role
holders, see `https://developer.android.com/reference/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.

<br />

| Parameters ||
|---|---|
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PackageInfo>` | A List of PackageInfo objects, one for each preferred application, in order of preference. This value cannot be `null`. <br /> |

### getProviderInfo

Added in [API level 9](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ProviderInfo getProviderInfo (ComponentName className, 
                int flags)
```

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

Use `https://developer.android.com/reference/android/content/pm/PackageManager#getProviderInfo(android.content.ComponentName,%20android.content.pm.PackageManager.ComponentInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `className` | `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`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/ProviderInfo` | A `https://developer.android.com/reference/android/content/pm/ProviderInfo` object containing information about the provider. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getReceiverInfo

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ActivityInfo getReceiverInfo (ComponentName className, 
                int flags)
```

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

Use `https://developer.android.com/reference/android/content/pm/PackageManager#getReceiverInfo(android.content.ComponentName,%20android.content.pm.PackageManager.ComponentInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `className` | `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`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/ActivityInfo` | An `https://developer.android.com/reference/android/content/pm/ActivityInfo` containing information about the receiver. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getResourcesForActivity

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Resources getResourcesForActivity (ComponentName activityName)
```

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

<br />

| Parameters ||
|---|---|
| `activityName` | `ComponentName`: Name of the activity whose resources are to be retrieved. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/res/Resources` | Returns the application's Resources. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getResourcesForApplication

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Resources getResourcesForApplication (ApplicationInfo app)
```

Retrieve the resources for an application. Throws NameNotFoundException
if the package is no longer installed.

<br />

| Parameters ||
|---|---|
| `app` | `ApplicationInfo`: Information about the desired application. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/res/Resources` | Returns the application's Resources. This value cannot be `null`. <br /> |

### getResourcesForApplication

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Resources getResourcesForApplication (String appPackageName)
```

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

<br />

| Parameters ||
|---|---|
| `appPackageName` | `String`: Package name of the application whose resources are to be retrieved. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/res/Resources` | Returns the application's Resources. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getServiceInfo

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ServiceInfo getServiceInfo (ComponentName className, 
                int flags)
```

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

Use `https://developer.android.com/reference/android/content/pm/PackageManager#getServiceInfo(android.content.ComponentName,%20android.content.pm.PackageManager.ComponentInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `className` | `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`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/ServiceInfo` | A `https://developer.android.com/reference/android/content/pm/ServiceInfo` object containing information about the service. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### getSharedLibraries

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public List<SharedLibraryInfo> getSharedLibraries (int flags)
```

Get a list of shared libraries on the device.

Use `https://developer.android.com/reference/android/content/pm/PackageManager#getSharedLibraries(android.content.pm.PackageManager.PackageInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `flags` | `int`: To filter the libraries to return. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/SharedLibraryInfo>` | This value cannot be `null`. <br /> |

### getSystemAvailableFeatures

Added in [API level 5](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public FeatureInfo[] getSystemAvailableFeatures ()
```

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

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/FeatureInfo` | An array of FeatureInfo classes describing the features that are available on the system, or null if there are none(!!). <br /> |

### getSystemSharedLibraryNames

Added in [API level 3](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public String[] getSystemSharedLibraryNames ()
```

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

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | An array of shared library names that are available on the system, or null if none are installed. <br /> |

### getText

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public CharSequence getText (String packageName, 
                int resid, 
                ApplicationInfo appInfo)
```

Retrieve text from a package. This is a low-level API used by
the various package manager info structures (such as
`https://developer.android.com/reference/android/content/pm/ComponentInfo` to implement retrieval of their associated
labels and other text.

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: The name of the package that this text is coming from. Cannot be null. <br /> |
| `resid` | `int`: The resource identifier of the desired text. Cannot be 0. <br /> |
| `appInfo` | `ApplicationInfo`: Overall information about <var translate="no">packageName</var>. 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. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/CharSequence` | Returns a CharSequence holding the requested text. Returns null if the text could not be found for any reason. <br /> |

### getUserBadgedDrawableForDensity

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Drawable getUserBadgedDrawableForDensity (Drawable drawable, 
                UserHandle user, 
                Rect badgeLocation, 
                int badgeDensity)
```

If the target user is a managed profile of the calling user or the caller
is itself a managed profile, then this returns a badged copy of the given
drawable allowing the user to distinguish it from the original drawable.
The caller can specify the location in the bounds of the drawable to be
badged where the badge should be applied as well as the density of the
badge to be used.


If the original drawable is a BitmapDrawable and the backing bitmap is
mutable as per `https://developer.android.com/reference/android/graphics/Bitmap#isMutable()`, the badging
is performed in place and the original drawable is returned.

<br />

<br />

| Parameters ||
|---|---|
| `drawable` | `Drawable`: The drawable to badge. This value cannot be `null`. <br /> |
| `user` | `UserHandle`: The target user. This value cannot be `null`. <br /> |
| `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. <br /> |
| `badgeDensity` | `int`: The optional desired density for the badge as per `https://developer.android.com/reference/android/util/DisplayMetrics#densityDpi`. If it's not positive, the density of the display is used. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable` | A drawable that combines the original drawable and a badge as determined by the system. This value cannot be `null`. <br /> |

### getUserBadgedIcon

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Drawable getUserBadgedIcon (Drawable icon, 
                UserHandle user)
```

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
`https://developer.android.com/reference/android/content/pm/PackageManager#getUserBadgedDrawableForDensity(android.graphics.drawable.Drawable,%20android.os.UserHandle,%20android.graphics.Rect,%20int)`.


If the original drawable is a BitmapDrawable and the backing bitmap is
mutable as per `https://developer.android.com/reference/android/graphics/Bitmap#isMutable()`, the badging
is performed in place and the original drawable is returned.

<br />

<br />

| Parameters ||
|---|---|
| `icon` | `Drawable`: The drawable to badge. This value cannot be `null`. <br /> |
| `user` | `UserHandle`: The target user. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable` | A drawable that combines the original icon and a badge as determined by the system. This value cannot be `null`. <br /> |

### getUserBadgedLabel

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public CharSequence getUserBadgedLabel (CharSequence label, 
                UserHandle user)
```

If the target user is a managed profile of the calling user or the caller
is itself a managed profile, then this returns a copy of the label with
badging for accessibility services like talkback. E.g. passing in "Email"
and it might return "Work Email" for Email in the work profile.

<br />

| Parameters ||
|---|---|
| `label` | `CharSequence`: The label to change. This value cannot be `null`. <br /> |
| `user` | `UserHandle`: The target user. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/CharSequence` | A label that combines the original label and a badge as determined by the system. This value cannot be `null`. <br /> |

### getWhitelistedRestrictedPermissions

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Set<String> getWhitelistedRestrictedPermissions (String packageName, 
                int whitelistFlags)
```

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 `https://developer.android.com/reference/android/content/pm/PermissionInfo#FLAG_HARD_RESTRICTED` or `https://developer.android.com/reference/android/content/pm/PermissionInfo#FLAG_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.

<br />

There are four allowlists:
1. one for cases where the system permission policy whitelists a permission This list corresponds to the`https://developer.android.com/reference/android/content/pm/PackageManager#FLAG_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 `https://developer.android.com/reference/android/content/pm/PackageManager#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 `https://developer.android.com/reference/android/content/pm/PackageManager#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".

<br />

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: This value cannot be `null`. <br /> |
| `whitelistFlags` | `int`: Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/content/pm/PackageManager#FLAG_PERMISSION_WHITELIST_SYSTEM` - `https://developer.android.com/reference/android/content/pm/PackageManager#FLAG_PERMISSION_WHITELIST_INSTALLER` - `https://developer.android.com/reference/android/content/pm/PackageManager#FLAG_PERMISSION_WHITELIST_UPGRADE` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/lang/String>` | This value cannot be `null`. <br /> |

### getXml

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public XmlResourceParser getXml (String packageName, 
                int resid, 
                ApplicationInfo appInfo)
```

Retrieve an XML file from a package. This is a low-level API used to
retrieve XML meta data.

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: The name of the package that this xml is coming from. Cannot be null. <br /> |
| `resid` | `int`: The resource identifier of the desired xml. Cannot be 0. <br /> |
| `appInfo` | `ApplicationInfo`: Overall information about <var translate="no">packageName</var>. 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. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/res/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. <br /> |

### hasSigningCertificate

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean hasSigningCertificate (int uid, 
                byte[] certificate, 
                int type)
```

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.

<br />

| Parameters ||
|---|---|
| `uid` | `int`: uid whose signing certificates to check <br /> |
| `certificate` | `byte`: signing certificate for which to search. This value cannot be `null`. <br /> |
| `type` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/content/pm/PackageManager#CERT_INPUT_RAW_X509` - `https://developer.android.com/reference/android/content/pm/PackageManager#CERT_INPUT_SHA256` |

| Returns ||
|---|---|
| `boolean` | true if this package was or is signed by exactly the certificate `certificate` <br /> |

### hasSigningCertificate

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean hasSigningCertificate (String packageName, 
                byte[] certificate, 
                int type)
```

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.

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: package whose signing certificates to check. This value cannot be `null`. <br /> |
| `certificate` | `byte`: signing certificate for which to search. This value cannot be `null`. <br /> |
| `type` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/content/pm/PackageManager#CERT_INPUT_RAW_X509` - `https://developer.android.com/reference/android/content/pm/PackageManager#CERT_INPUT_SHA256` |

| Returns ||
|---|---|
| `boolean` | true if this package was or is signed by exactly the certificate `certificate` <br /> |

### hasSystemFeature

Added in [API level 5](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean hasSystemFeature (String name)
```

Check whether the given feature name is one of the available features as
returned by `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()`. This tests for the
presence of *any* version of the given feature name; use
`https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String,%20int)` to check for a minimum version.

<br />

| Parameters ||
|---|---|
| `name` | `String`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `boolean` | Returns true if the devices supports the feature, else false. <br /> |

### hasSystemFeature

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean hasSystemFeature (String name, 
                int version)
```

Check whether the given feature name and version is one of the available
features as returned by `https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()`. Since
features are defined to always be backwards compatible, this returns true
if the available feature version is greater than or equal to the
requested version.

<br />

| Parameters ||
|---|---|
| `name` | `String`: This value cannot be `null`. <br /> |
| `version` | `int` <br /> |

| Returns ||
|---|---|
| `boolean` | Returns true if the devices supports the feature, else false. <br /> |

### isDeviceUpgrading

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean isDeviceUpgrading ()
```

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

<br />

| Returns ||
|---|---|
| `boolean` | <br /> |

### isInstantApp

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean isInstantApp ()
```

Gets whether this application is an instant app.

<br />

| Returns ||
|---|---|
| `boolean` | Whether caller is an instant app. <br /> |

### isInstantApp

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean isInstantApp (String packageName)
```

Gets whether the given package is an instant app.

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: The package to check. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `boolean` | Whether the given package is an instant app. <br /> |

### isPermissionRevokedByPolicy

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean isPermissionRevokedByPolicy (String permName, 
                String pkgName)
```

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.

<br />

| Parameters ||
|---|---|
| `permName` | `String`: The name of the permission you are checking for. This value cannot be `null`. <br /> |
| `pkgName` | `String`: The name of the package you are checking against. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `boolean` | Whether the permission is restricted by policy. <br /> |

### isSafeMode

Added in [API level 3](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean isSafeMode ()
```

Return whether the device has been booted into safe mode.

<br />

| Returns ||
|---|---|
| `boolean` | <br /> |

### queryBroadcastReceivers

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public List<ResolveInfo> queryBroadcastReceivers (Intent intent, 
                int flags)
```

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

Use `https://developer.android.com/reference/android/content/pm/PackageManager#queryBroadcastReceivers(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `intent` | `Intent`: The desired intent as per resolveActivity(). This value cannot be `null`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/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, returns an empty list. This value cannot be `null`. <br /> |

### queryContentProviders

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public List<ProviderInfo> queryContentProviders (String processName, 
                int uid, 
                int flags)
```

Retrieve content provider information.


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

Use `https://developer.android.com/reference/android/content/pm/PackageManager#queryContentProviders(java.lang.String,%20int,%20android.content.pm.PackageManager.ComponentInfoFlags)` when long flags are
needed.

<br />

| 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. <br /> |
| `uid` | `int`: If <var translate="no">processName</var> is non-null, this is the required uid owning the requested content providers. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/ProviderInfo>` | A list of `https://developer.android.com/reference/android/content/pm/ProviderInfo` objects containing one entry for each provider either matching <var translate="no">processName</var> or, if <var translate="no">processName</var> is null, all known content providers. *If there are no matching providers, null is returned.* <br /> |

### queryInstrumentation

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public List<InstrumentationInfo> queryInstrumentation (String targetPackage, 
                int flags)
```

Retrieve information about available instrumentation code. May be used to
retrieve either all instrumentation code, or only the code targeting a
particular package.

<br />

| Parameters ||
|---|---|
| `targetPackage` | `String`: If null, all instrumentation is returned; only the instrumentation targeting this package name is returned. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. Value is either `0` or - `https://developer.android.com/reference/android/content/pm/PackageManager#GET_META_DATA` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/InstrumentationInfo>` | A list of `https://developer.android.com/reference/android/content/pm/InstrumentationInfo` objects containing one entry for each matching instrumentation. If there are no instrumentation available, returns an empty list. This value cannot be `null`. <br /> |

### queryIntentActivities

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public List<ResolveInfo> queryIntentActivities (Intent intent, 
                int flags)
```

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

Use `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `intent` | `Intent`: The desired intent as per resolveActivity(). This value cannot be `null`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. The most important is `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_DEFAULT_ONLY`, to limit the resolution to only those activities that support the `https://developer.android.com/reference/android/content/Intent#CATEGORY_DEFAULT`. Or, set `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_ALL` to prevent any filtering of the results. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/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 `https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. If there are no matching activities, an empty list is returned. This value cannot be `null`. <br /> |

### queryIntentActivityOptions

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public List<ResolveInfo> queryIntentActivityOptions (ComponentName caller, 
                Intent[] specifics, 
                Intent intent, 
                int flags)
```

Retrieve a set of activities that should be presented to the user as
similar options. This is like `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`, 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 `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivityOptions(android.content.ComponentName,%20java.util.List<android.content.Intent>,%20android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` when
long flags are needed.

<br />

| 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. <br /> |
| `specifics` | `Intent`: An array of Intents that should be resolved to the first specific results. Can be null. <br /> |
| `intent` | `Intent`: The desired intent as per resolveActivity(). This value cannot be `null`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. The most important is `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_DEFAULT_ONLY`, to limit the resolution to only those activities that support the `https://developer.android.com/reference/android/content/Intent#CATEGORY_DEFAULT`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/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 <var translate="no">specifics</var> and then any additional activities that can handle <var translate="no">intent</var> but did not get included by one of the <var translate="no">specifics</var> intents. If there are no matching activities, an empty list is returned. This value cannot be `null`. <br /> |

### queryIntentContentProviders

Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public List<ResolveInfo> queryIntentContentProviders (Intent intent, 
                int flags)
```

Retrieve all providers that can match the given intent.

Use `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentContentProviders(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` when long flags are
needed.

<br />

| Parameters ||
|---|---|
| `intent` | `Intent`: An intent containing all of the desired specification (action, data, type, category, and/or component). This value cannot be `null`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/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, returns an empty list. This value cannot be `null`. <br /> |

### queryIntentServices

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public List<ResolveInfo> queryIntentServices (Intent intent, 
                int flags)
```

Retrieve all services that can match the given intent.

Use `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentServices(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `intent` | `Intent`: The desired intent as per resolveService(). This value cannot be `null`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/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 `https://developer.android.com/reference/android/content/pm/PackageManager#resolveService(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. If there are no matching services, returns an empty list. This value cannot be `null`. <br /> |

### queryPermissionsByGroup

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public List<PermissionInfo> queryPermissionsByGroup (String group, 
                int flags)
```

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

<br />

| Parameters ||
|---|---|
| `group` | `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. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. Value is either `0` or - `https://developer.android.com/reference/android/content/pm/PackageManager#GET_META_DATA` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/content/pm/PermissionInfo>` | Returns a list of `https://developer.android.com/reference/android/content/pm/PermissionInfo` containing information about all of the permissions in the given group. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException` |   |

### removePackageFromPreferred

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void removePackageFromPreferred (String packageName)
```


**This method is 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
`https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` or `https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)`. To configure
an app to be responsible for a particular role and to check current role
holders, see `https://developer.android.com/reference/android/app/role/RoleManager`.

<br />

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: This value cannot be `null`. <br /> |

### removePermission

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void removePermission (String name)
```

Removes a permission that was previously added with
`https://developer.android.com/reference/android/content/pm/PackageManager#addPermission(android.content.pm.PermissionInfo)`. The same ownership rules apply
-- you are only allowed to remove permissions that you are allowed
to add.

<br />

| Parameters ||
|---|---|
| `name` | `String`: The name of the permission to remove. This value cannot be `null`. <br /> |

### removeWhitelistedRestrictedPermission

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean removeWhitelistedRestrictedPermission (String packageName, 
                String permission, 
                int whitelistFlags)
```

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 `https://developer.android.com/reference/android/content/pm/PermissionInfo#FLAG_HARD_RESTRICTED` or `https://developer.android.com/reference/android/content/pm/PermissionInfo#FLAG_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.

<br />

There are four whitelists:
1. one for cases where the system permission policy whitelists a permission This list corresponds to the `https://developer.android.com/reference/android/content/pm/PackageManager#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 `https://developer.android.com/reference/android/content/pm/PackageManager#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 `https://developer.android.com/reference/android/content/pm/PackageManager#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 `https://developer.android.com/reference/android/content/pm/PackageManager#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".

<br />

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: This value cannot be `null`. <br /> |
| `permission` | `String`: This value cannot be `null`. <br /> |
| `whitelistFlags` | `int`: Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/content/pm/PackageManager#FLAG_PERMISSION_WHITELIST_SYSTEM` - `https://developer.android.com/reference/android/content/pm/PackageManager#FLAG_PERMISSION_WHITELIST_INSTALLER` - `https://developer.android.com/reference/android/content/pm/PackageManager#FLAG_PERMISSION_WHITELIST_UPGRADE` |

| Returns ||
|---|---|
| `boolean` | Whether the permission was removed from the whitelist. <br /> |

### resolveActivity

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ResolveInfo resolveActivity (Intent intent, 
                int flags)
```

Determine the best action to perform for a given Intent. This is how
`https://developer.android.com/reference/android/content/Intent#resolveActivity(android.content.pm.PackageManager)` 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
`https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_DEFAULT_ONLY` only flag. You need to do so to resolve the
activity in the same way that
`https://developer.android.com/reference/android/content/Context#startActivity(android.content.Intent)` and
`https://developer.android.com/reference/android/content/Intent#resolveActivity(android.content.pm.PackageManager)` do.
Use `https://developer.android.com/reference/android/content/pm/PackageManager#resolveActivity(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` when long flags are needed.

<br />

<br />

| Parameters ||
|---|---|
| `intent` | `Intent`: An intent containing all of the desired specification (action, data, type, category, and/or component). This value cannot be `null`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. The most important is `https://developer.android.com/reference/android/content/pm/PackageManager#MATCH_DEFAULT_ONLY`, to limit the resolution to only those activities that support the `https://developer.android.com/reference/android/content/Intent#CATEGORY_DEFAULT`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/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. <br /> |

### resolveContentProvider

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ProviderInfo resolveContentProvider (String name, 
                int flags)
```

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 `https://developer.android.com/reference/android/content/pm/PackageManager#resolveContentProvider(java.lang.String,%20android.content.pm.PackageManager.ComponentInfoFlags)` when long flags are needed.

<br />

<br />

| Parameters ||
|---|---|
| `name` | `String`: The authority of the provider to find. This value cannot be `null`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/ProviderInfo` | A `https://developer.android.com/reference/android/content/pm/ProviderInfo` object containing information about the provider. If a provider was not found, returns null. <br /> |

### resolveService

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ResolveInfo resolveService (Intent intent, 
                int flags)
```

Determine the best service to handle for a given Intent.

Use `https://developer.android.com/reference/android/content/pm/PackageManager#resolveService(android.content.Intent,%20android.content.pm.PackageManager.ResolveInfoFlags)` when long flags are needed.

<br />

| Parameters ||
|---|---|
| `intent` | `Intent`: An intent containing all of the desired specification (action, data, type, category, and/or component). This value cannot be `null`. <br /> |
| `flags` | `int`: Additional option flags to modify the data returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/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. <br /> |

### resolveServiceAsUser

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ResolveInfo resolveServiceAsUser (Intent intent, 
                int flags, 
                int userId)
```

<br />

<br />

| Parameters ||
|---|---|
| `intent` | `Intent` <br /> |
| `flags` | `int` <br /> |
| `userId` | `int` <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/ResolveInfo` | <br /> |

### setApplicationCategoryHint

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void setApplicationCategoryHint (String packageName, 
                int categoryHint)
```

Provide a hint of what the `https://developer.android.com/reference/android/content/pm/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 `https://developer.android.com/reference/android/content/pm/PackageManager#getInstallerPackageName(java.lang.String)`.

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: the package to change the category hint for. This value cannot be `null`. <br /> |
| `categoryHint` | `int`: the category hint to set. Value is one of the following: - `https://developer.android.com/reference/android/content/pm/ApplicationInfo#CATEGORY_UNDEFINED` - `https://developer.android.com/reference/android/content/pm/ApplicationInfo#CATEGORY_GAME` - `https://developer.android.com/reference/android/content/pm/ApplicationInfo#CATEGORY_AUDIO` - `https://developer.android.com/reference/android/content/pm/ApplicationInfo#CATEGORY_VIDEO` - `https://developer.android.com/reference/android/content/pm/ApplicationInfo#CATEGORY_IMAGE` - `https://developer.android.com/reference/android/content/pm/ApplicationInfo#CATEGORY_SOCIAL` - `https://developer.android.com/reference/android/content/pm/ApplicationInfo#CATEGORY_NEWS` - `https://developer.android.com/reference/android/content/pm/ApplicationInfo#CATEGORY_MAPS` - `https://developer.android.com/reference/android/content/pm/ApplicationInfo#CATEGORY_PRODUCTIVITY` - `https://developer.android.com/reference/android/content/pm/ApplicationInfo#CATEGORY_ACCESSIBILITY` |

### setApplicationEnabledSetting

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void setApplicationEnabledSetting (String packageName, 
                int newState, 
                int flags)
```

Set the enabled setting for an application
This setting will override any enabled state which may have been set by the application in
its manifest. It also overrides the enabled state set in the manifest for any of the
application's components. It does not override any enabled state set by
`https://developer.android.com/reference/android/content/pm/PackageManager#setComponentEnabledSetting(android.content.ComponentName,%20int,%20int)` for any of the application's components.

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: The package name of the application to enable. This value cannot be `null`. <br /> |
| `newState` | `int`: The new enabled state for the application. Value is one of the following: - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DEFAULT` - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_ENABLED` - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DISABLED` - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DISABLED_USER` - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED` |
| `flags` | `int`: Optional behavior flags. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/content/pm/PackageManager#DONT_KILL_APP` - `https://developer.android.com/reference/android/content/pm/PackageManager#SYNCHRONOUS` |

### setComponentEnabledSetting

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void setComponentEnabledSetting (ComponentName componentName, 
                int newState, 
                int flags)
```

Set the enabled setting for a package component (activity, receiver, service, provider).
This setting will override any enabled state which may have been set by the component in its
manifest.

Consider using `https://developer.android.com/reference/android/content/pm/PackageManager#setComponentEnabledSettings(java.util.List<android.content.pm.PackageManager.ComponentEnabledSetting>)` if multiple components need to
be updated atomically.

<br />

| Parameters ||
|---|---|
| `componentName` | `ComponentName`: The component to enable. This value cannot be `null`. <br /> |
| `newState` | `int`: The new enabled state for the component. Value is one of the following: - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DEFAULT` - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_ENABLED` - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DISABLED` - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DISABLED_USER` - `https://developer.android.com/reference/android/content/pm/PackageManager#COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED` |
| `flags` | `int`: Optional behavior flags. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/content/pm/PackageManager#DONT_KILL_APP` - `https://developer.android.com/reference/android/content/pm/PackageManager#SYNCHRONOUS` |

### setInstallerPackageName

Added in [API level 11](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void setInstallerPackageName (String targetPackage, 
                String installerPackageName)
```

Change the installer associated with a given package. There are limitations
on how the installer package can be changed; in particular:

- A SecurityException will be thrown if <var translate="no">installerPackageName</var> is not signed with the same certificate as the calling application.
- A SecurityException will be thrown if <var translate="no">targetPackage</var> already has an installer package, and that installer package is not signed with the same certificate as the calling application.

<br />

<br />

| Parameters ||
|---|---|
| `targetPackage` | `String`: The installed package whose installer will be changed. This value cannot be `null`. <br /> |
| `installerPackageName` | `String`: The package name of the new installer. May be null to clear the association. <br /> |

### setInstantAppCookie

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean setInstantAppCookie (byte[] cookie)
```

<br />

<br />

| Parameters ||
|---|---|
| `cookie` | `byte`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `boolean` | <br /> |

### updateInstantAppCookie

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void updateInstantAppCookie (byte[] cookie)
```

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 `https://developer.android.com/reference/android/content/pm/PackageManager#getInstantAppCookieMaxBytes()`.
Passing `null` or an empty array clears the cookie.

<br />

<br />

| Parameters ||
|---|---|
| `cookie` | `byte`: This value cannot be `null`. <br /> |

### verifyPendingInstall

Added in [API level 14](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void verifyPendingInstall (int id, 
                int verificationCode)
```

Allows a package listening to the
`https://developer.android.com/reference/android/content/Intent#ACTION_PACKAGE_NEEDS_VERIFICATION` to respond to the package manager. The response must include
the `verificationCode` which is one of
`https://developer.android.com/reference/android/content/pm/PackageManager#VERIFICATION_ALLOW` or
`https://developer.android.com/reference/android/content/pm/PackageManager#VERIFICATION_REJECT`.

<br />

| Parameters ||
|---|---|
| `id` | `int`: pending package identifier as passed via the `https://developer.android.com/reference/android/content/pm/PackageManager#EXTRA_VERIFICATION_ID` Intent extra. <br /> |
| `verificationCode` | `int`: either `https://developer.android.com/reference/android/content/pm/PackageManager#VERIFICATION_ALLOW` or `https://developer.android.com/reference/android/content/pm/PackageManager#VERIFICATION_REJECT`. <br /> |