NotificationListenerService


public abstract class NotificationListenerService
extends Service

java.lang.Object
   ↳ android.content.Context
     ↳ android.content.ContextWrapper
       ↳ android.app.Service
         ↳ android.service.notification.NotificationListenerService


A service that receives calls from the system when new notifications are posted or removed, or their ranking changed.

To extend this class, you must declare the service in your manifest file with the Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE permission and include an intent filter with the SERVICE_INTERFACE action. For example:

 <service android:name=".NotificationListener"
          android:label="@string/service_name"
          android:exported="false"
          android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
     <intent-filter>
         <action android:name="android.service.notification.NotificationListenerService" />
     </intent-filter>
     <meta-data
               android:name="android.service.notification.default_filter_types"
               android:value="conversations|alerting">
           </meta-data>
     <meta-data
               android:name="android.service.notification.disabled_filter_types"
               android:value="ongoing|silent">
           </meta-data>
 </service>

The service should wait for the onListenerConnected() event before performing any operations. The requestRebind(android.content.ComponentName) method is the only one that is safe to call before onListenerConnected() or after onListenerDisconnected().

Notification listeners cannot get notification access or be bound by the system on low-RAM devices running Android Q (and below). The system also ignores notification listeners running in a work profile. A DevicePolicyManager might block notifications originating from a work profile.

From Build.VERSION_CODES.N onward all callbacks are called on the main thread. Prior to N, there is no guarantee on what thread the callback will happen.

Summary

Nested classes

class NotificationListenerService.Ranking

Stores ranking related information on a currently active notification. 

class NotificationListenerService.RankingMap

Provides access to ranking information on currently active notifications. 

Constants

String ACTION_SETTINGS_HOME

An optional activity intent action that shows additional settings for what notifications should be processed by this notification listener service.

int FLAG_FILTER_TYPE_ALERTING

A flag value indicating that this notification listener can see altering type notifications.

int FLAG_FILTER_TYPE_CONVERSATIONS

A flag value indicating that this notification listener can see conversation type notifications.

int FLAG_FILTER_TYPE_ONGOING

A flag value indicating that this notification listener can see important ( > NotificationManager.IMPORTANCE_MIN) ongoing type notifications.

int FLAG_FILTER_TYPE_SILENT

A flag value indicating that this notification listener can see silent type notifications.

int HINT_HOST_DISABLE_CALL_EFFECTS

Listener hints constant - the primary device UI should disable phone call sounds, but not notification sound.

int HINT_HOST_DISABLE_EFFECTS

Listener hints constant - the primary device UI should disable notification sound, vibrating and other visual or aural effects.

int HINT_HOST_DISABLE_NOTIFICATION_EFFECTS

Listener hints constant - the primary device UI should disable notification sound, but not phone calls.

int INTERRUPTION_FILTER_ALARMS

Interruption filter constant - Alarms only interruption filter.

int INTERRUPTION_FILTER_ALL

Interruption filter constant - Normal interruption filter.

int INTERRUPTION_FILTER_NONE

Interruption filter constant - No interruptions filter.

int INTERRUPTION_FILTER_PRIORITY

Interruption filter constant - Priority interruption filter.

int INTERRUPTION_FILTER_UNKNOWN

Interruption filter constant - returned when the value is unavailable for any reason.

String META_DATA_DEFAULT_AUTOBIND

The name of the meta-data tag containing a boolean value that is used to decide if this listener should be automatically bound by default.

String META_DATA_DEFAULT_FILTER_TYPES

The name of the meta-data tag containing a pipe separated list of default integer notification types or "ongoing", "conversations", "alerting", or "silent" that should be provided to this listener.

String META_DATA_DISABLED_FILTER_TYPES

The name of the meta-data tag containing a comma separated list of default integer notification types that this listener never wants to receive.

int NOTIFICATION_CHANNEL_OR_GROUP_ADDED

Channel or group modification reason provided to onNotificationChannelModified(java.lang.String, android.os.UserHandle, android.app.NotificationChannel, int) or onNotificationChannelGroupModified(java.lang.String, android.os.UserHandle, android.app.NotificationChannelGroup, int)- the provided object was created.

int NOTIFICATION_CHANNEL_OR_GROUP_DELETED

Channel or group modification reason provided to onNotificationChannelModified(java.lang.String, android.os.UserHandle, android.app.NotificationChannel, int) or onNotificationChannelGroupModified(java.lang.String, android.os.UserHandle, android.app.NotificationChannelGroup, int)- the provided object was deleted.

int NOTIFICATION_CHANNEL_OR_GROUP_UPDATED

Channel or group modification reason provided to onNotificationChannelModified(java.lang.String, android.os.UserHandle, android.app.NotificationChannel, int) or onNotificationChannelGroupModified(java.lang.String, android.os.UserHandle, android.app.NotificationChannelGroup, int) - the provided object was updated.

int REASON_APP_CANCEL

Notification was canceled by the app canceling this specific notification.

int REASON_APP_CANCEL_ALL

Notification was canceled by the app cancelling all its notifications.

int REASON_ASSISTANT_CANCEL

Notification was canceled due to an assistant adjustment update.

int REASON_CANCEL

Notification was canceled by the status bar reporting a user dismissal.

int REASON_CANCEL_ALL

Notification was canceled by the status bar reporting a user dismiss all.

int REASON_CHANNEL_BANNED

Notification was canceled by the user banning the channel.

int REASON_CHANNEL_REMOVED

Notification was canceled due to the backing channel being deleted

int REASON_CLEAR_DATA

Notification was canceled due to the app's storage being cleared

int REASON_CLICK

Notification was canceled by the status bar reporting a notification click.

int REASON_ERROR

Notification was canceled by the status bar reporting an inflation error.

int REASON_GROUP_OPTIMIZATION

Notification was canceled because it was an invisible member of a group.

int REASON_GROUP_SUMMARY_CANCELED

Notification was canceled because it was a member of a canceled group.

int REASON_LISTENER_CANCEL

Notification was canceled by a listener reporting a user dismissal.

int REASON_LISTENER_CANCEL_ALL

Notification was canceled by a listener reporting a user dismiss all.

int REASON_LOCKDOWN

Notification was canceled when entering lockdown mode, which turns off Smart Lock, fingerprint unlocking, and notifications on the lock screen.

int REASON_PACKAGE_BANNED

Notification was canceled by the user banning the package.

int REASON_PACKAGE_CHANGED

Notification was canceled by the package manager modifying the package.

int REASON_PACKAGE_SUSPENDED

Notification was canceled by the device administrator suspending the package.

int REASON_PROFILE_TURNED_OFF

Notification was canceled by the owning managed profile being turned off.

int REASON_SNOOZED

Notification was snoozed.

int REASON_TIMEOUT

Notification was canceled due to timeout

int REASON_UNAUTOBUNDLED

Autobundled summary notification was canceled because its group was unbundled

int REASON_USER_STOPPED

Notification was canceled by the owning user context being stopped.

String SERVICE_INTERFACE

The Intent that must be declared as handled by the service.

int SUPPRESSED_EFFECT_SCREEN_OFF

This constant was deprecated in API level 28. Use the more specific visual effects in NotificationManager.Policy.

int SUPPRESSED_EFFECT_SCREEN_ON

This constant was deprecated in API level 28. Use the more specific visual effects in NotificationManager.Policy.

Inherited constants

int START_CONTINUATION_MASK

Bits returned by onStartCommand(Intent, int, int) describing how to continue the service if it is killed.

int START_FLAG_REDELIVERY

This flag is set in onStartCommand(Intent, int, int) if the Intent is a re-delivery of a previously delivered intent, because the service had previously returned START_REDELIVER_INTENT but had been killed before calling stopSelf(int) for that Intent.

int START_FLAG_RETRY

This flag is set in onStartCommand(Intent, int, int) if the Intent is a retry because the original attempt never got to or returned from onStartCommand(android.content.Intent, int, int).

int START_NOT_STICKY

Constant to return from onStartCommand(Intent, int, int): if this service's process is killed while it is started (after returning from onStartCommand(Intent, int, int)), and there are no new start intents to deliver to it, then take the service out of the started state and don't recreate until a future explicit call to Context.startService(Intent).

int START_REDELIVER_INTENT

Constant to return from onStartCommand(Intent, int, int): if this service's process is killed while it is started (after returning from onStartCommand(Intent, int, int)), then it will be scheduled for a restart and the last delivered Intent re-delivered to it again via onStartCommand(Intent, int, int).

int START_STICKY

Constant to return from onStartCommand(Intent, int, int): if this service's process is killed while it is started (after returning from onStartCommand(Intent, int, int)), then leave it in the started state but don't retain this delivered intent.

int START_STICKY_COMPATIBILITY

Constant to return from onStartCommand(Intent, int, int): compatibility version of START_STICKY that does not guarantee that onStartCommand(Intent, int, int) will be called again after being killed.

int STOP_FOREGROUND_DETACH

Selector for stopForeground(int): if set, the notification previously supplied to startForeground(int, Notification) will be detached from the service's lifecycle.

int STOP_FOREGROUND_LEGACY

This constant was deprecated in API level 33. Use STOP_FOREGROUND_DETACH instead. The legacy behavior was inconsistent, leading to bugs around unpredictable results.

int STOP_FOREGROUND_REMOVE

Selector for stopForeground(int): if supplied, the notification previously supplied to startForeground(int, Notification) will be cancelled and removed from display.

String ACCESSIBILITY_SERVICE

Use with getSystemService(java.lang.String) to retrieve a AccessibilityManager for giving the user feedback for UI events through the registered event listeners.

String ACCOUNT_SERVICE

Use with getSystemService(java.lang.String) to retrieve a AccountManager for receiving intents at a time of your choosing.

String ACTIVITY_SERVICE

Use with getSystemService(java.lang.String) to retrieve a ActivityManager for interacting with the global system state.

String ADVANCED_PROTECTION_SERVICE

Use with getSystemService(java.lang.String) to retrieve an AdvancedProtectionManager

String ALARM_SERVICE

Use with getSystemService(java.lang.String) to retrieve a AlarmManager for receiving intents at a time of your choosing.

String APPWIDGET_SERVICE

Use with getSystemService(java.lang.String) to retrieve a AppWidgetManager for accessing AppWidgets.

String APP_FUNCTION_SERVICE

Use with getSystemService(java.lang.String) to retrieve an AppFunctionManager for executing app functions.

String APP_OPS_SERVICE

Use with getSystemService(java.lang.String) to retrieve a AppOpsManager for tracking application operations on the device.

String APP_SEARCH_SERVICE

Use with getSystemService(java.lang.String) to retrieve an AppSearchManager for indexing and querying app data managed by the system.

String AUDIO_SERVICE

Use with getSystemService(java.lang.String) to retrieve a AudioManager for handling management of volume, ringer modes and audio routing.

String BATTERY_SERVICE

Use with getSystemService(java.lang.String) to retrieve a BatteryManager for managing battery state.

int BIND_ABOVE_CLIENT

Flag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): indicates that the client application binding to this service considers the service to be more important than the app itself.

int BIND_ADJUST_WITH_ACTIVITY

Flag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): If binding from an activity, allow the target service's process importance to be raised based on whether the activity is visible to the user, regardless whether another flag is used to reduce the amount that the client process's overall importance is used to impact it.

int BIND_ALLOW_ACTIVITY_STARTS

Flag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): If binding from an app that is visible, the bound service is allowed to start an activity from background.

int BIND_ALLOW_OOM_MANAGEMENT

Flag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): allow the process hosting the bound service to go through its normal memory management.

int BIND_AUTO_CREATE

Flag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): automatically create the service as long as the binding exists.

int BIND_DEBUG_UNBIND

Flag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): include debugging help for mismatched calls to unbind.

int BIND_EXTERNAL_SERVICE

Flag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): The service being bound is an isolated, external service.

long BIND_EXTERNAL_SERVICE_LONG

Works in the same way as BIND_EXTERNAL_SERVICE, but it's defined as a long value that is compatible to BindServiceFlags.

int BIND_IMPORTANT

Flag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): this service is very important to the client, so should be brought to the foreground process level when the client is.

int BIND_INCLUDE_CAPABILITIES

Flag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): If binding from an app that has specific capabilities due to its foreground state such as an activity or foreground service, then this flag will allow the bound app to get the same capabilities, as long as it has the required permissions as well.

int BIND_NOT_FOREGROUND

Flag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): don't allow this binding to raise the target service's process to the foreground scheduling priority.

int BIND_NOT_PERCEPTIBLE

Flag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): If binding from an app that is visible or user-perceptible, lower the target service's importance to below the perceptible level.

int BIND_PACKAGE_ISOLATED_PROCESS

Flag for bindIsolatedService(Intent, BindServiceFlags, String, Executor, ServiceConnection): Bind the service into a shared isolated process, but only with other isolated services from the same package that declare the same process name.

int BIND_SHARED_ISOLATED_PROCESS

Flag for bindIsolatedService(Intent, BindServiceFlags, String, Executor, ServiceConnection): Bind the service into a shared isolated process.

int BIND_WAIVE_PRIORITY

Flag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): don't impact the scheduling or memory management priority of the target service's hosting process.

String BIOMETRIC_SERVICE

Use with getSystemService(java.lang.String) to retrieve a BiometricManager for handling biometric and PIN/pattern/password authentication.

String BLOB_STORE_SERVICE

Use with getSystemService(java.lang.String) to retrieve a BlobStoreManager for contributing and accessing data blobs from the blob store maintained by the system.

String BLUETOOTH_SERVICE

Use with getSystemService(java.lang.String) to retrieve a BluetoothManager for using Bluetooth.

String BUGREPORT_SERVICE

Service to capture a bugreport.

String CAMERA_SERVICE

Use with getSystemService(java.lang.String) to retrieve a CameraManager for interacting with camera devices.

String CAPTIONING_SERVICE

Use with getSystemService(java.lang.String) to retrieve a CaptioningManager for obtaining captioning properties and listening for changes in captioning preferences.

String CARRIER_CONFIG_SERVICE

Use with getSystemService(java.lang.String) to retrieve a CarrierConfigManager for reading carrier configuration values.

String CLIPBOARD_SERVICE

Use with getSystemService(java.lang.String) to retrieve a ClipboardManager for accessing and modifying the contents of the global clipboard.

String COMPANION_DEVICE_SERVICE

Use with getSystemService(java.lang.String) to retrieve a CompanionDeviceManager for managing companion devices

String CONNECTIVITY_DIAGNOSTICS_SERVICE

Use with getSystemService(java.lang.String) to retrieve a ConnectivityDiagnosticsManager for performing network connectivity diagnostics as well as receiving network connectivity information from the system.

String CONNECTIVITY_SERVICE

Use with getSystemService(java.lang.String) to retrieve a ConnectivityManager for handling management of network connections.

String CONSUMER_IR_SERVICE

Use with getSystemService(java.lang.String) to retrieve a ConsumerIrManager for transmitting infrared signals from the device.

String CONTACT_KEYS_SERVICE

Use with getSystemService(java.lang.String) to retrieve a E2eeContactKeysManager to managing contact keys.

int CONTEXT_IGNORE_SECURITY

Flag for use with createPackageContext(String, int): ignore any security restrictions on the Context being requested, allowing it to always be loaded.

int CONTEXT_INCLUDE_CODE

Flag for use with createPackageContext(String, int): include the application code with the context.

int CONTEXT_RESTRICTED

Flag for use with createPackageContext(String, int): a restricted context may disable specific features.

String CREDENTIAL_SERVICE

Use with getSystemService(java.lang.String) to retrieve a CredentialManager to authenticate a user to your app.

String CROSS_PROFILE_APPS_SERVICE

Use with getSystemService(java.lang.String) to retrieve a CrossProfileApps for cross profile operations.

int DEVICE_ID_DEFAULT

The default device ID, which is the ID of the primary (non-virtual) device.

int DEVICE_ID_INVALID

Invalid device ID.

String DEVICE_LOCK_SERVICE

Use with getSystemService(java.lang.String) to retrieve a DeviceLockManager.

String DEVICE_POLICY_SERVICE

Use with getSystemService(java.lang.String) to retrieve a DevicePolicyManager for working with global device policy management.

String DISPLAY_HASH_SERVICE

Use with getSystemService(java.lang.String) to access DisplayHashManager to handle display hashes.

String DISPLAY_SERVICE

Use with getSystemService(java.lang.String) to retrieve a DisplayManager for interacting with display devices.

String DOMAIN_VERIFICATION_SERVICE

Use with getSystemService(java.lang.String) to access DomainVerificationManager to retrieve approval and user state for declared web domains.

String DOWNLOAD_SERVICE

Use with getSystemService(java.lang.String) to retrieve a DownloadManager for requesting HTTP downloads.

String DROPBOX_SERVICE

Use with getSystemService(java.lang.String) to retrieve a DropBoxManager instance for recording diagnostic logs.

String EUICC_SERVICE

Use with getSystemService(java.lang.String) to retrieve a EuiccManager to manage the device eUICC (embedded SIM).

String FILE_INTEGRITY_SERVICE

Use with getSystemService(java.lang.String) to retrieve an FileIntegrityManager.

String FINGERPRINT_SERVICE

Use with getSystemService(java.lang.String) to retrieve a FingerprintManager for handling management of fingerprints.

String GAME_SERVICE

Use with getSystemService(java.lang.String) to retrieve a GameManager.

String GRAMMATICAL_INFLECTION_SERVICE

Use with getSystemService(java.lang.String) to retrieve a GrammaticalInflectionManager.

String HARDWARE_PROPERTIES_SERVICE

Use with getSystemService(java.lang.String) to retrieve a HardwarePropertiesManager for accessing the hardware properties service.

String HEALTHCONNECT_SERVICE

Use with getSystemService(java.lang.String) to retrieve a HealthConnectManager.

String INPUT_METHOD_SERVICE

Use with getSystemService(java.lang.String) to retrieve a InputMethodManager for accessing input methods.

String INPUT_SERVICE

Use with getSystemService(java.lang.String) to retrieve a InputManager for interacting with input devices.

String IPSEC_SERVICE

Use with getSystemService(java.lang.String) to retrieve a IpSecManager for encrypting Sockets or Networks with IPSec.

String JOB_SCHEDULER_SERVICE

Use with getSystemService(java.lang.String) to retrieve a JobScheduler instance for managing occasional background tasks.

String KEYGUARD_SERVICE

Use with getSystemService(java.lang.String) to retrieve a KeyguardManager for controlling keyguard.

String KEYSTORE_SERVICE

Use with getSystemService(java.lang.String) to retrieve a KeyStoreManager for accessing Android Keystore functions.

String LAUNCHER_APPS_SERVICE

Use with getSystemService(java.lang.String) to retrieve a LauncherApps for querying and monitoring launchable apps across profiles of a user.

String LAYOUT_INFLATER_SERVICE

Use with getSystemService(java.lang.String) to retrieve a LayoutInflater for inflating layout resources in this context.

String LOCALE_SERVICE

Use with getSystemService(java.lang.String) to retrieve a LocaleManager.

String LOCATION_SERVICE

Use with getSystemService(java.lang.String) to retrieve a LocationManager for controlling location updates.

String MEDIA_COMMUNICATION_SERVICE

Use with getSystemService(java.lang.String) to retrieve a MediaCommunicationManager for managing MediaSession2.

String MEDIA_METRICS_SERVICE

Use with getSystemService(java.lang.String) to retrieve a MediaMetricsManager for interacting with media metrics on the device.

String MEDIA_PROJECTION_SERVICE

Use with getSystemService(java.lang.String) to retrieve a MediaProjectionManager instance for managing media projection sessions.

String MEDIA_QUALITY_SERVICE

Use with getSystemService(java.lang.String) to retrieve a ERROR(/android.media.quality.MediaQuality) for standardize picture and audio API parameters.

String MEDIA_ROUTER_SERVICE

Use with getSystemService(Class) to retrieve a MediaRouter for controlling and managing routing of media.

String MEDIA_SESSION_SERVICE

Use with getSystemService(java.lang.String) to retrieve a MediaSessionManager for managing media Sessions.

String MIDI_SERVICE

Use with getSystemService(java.lang.String) to retrieve a MidiManager for accessing the MIDI service.

int MODE_APPEND

File creation mode: for use with openFileOutput(String, int), if the file already exists then write data to the end of the existing file instead of erasing it.

int MODE_ENABLE_WRITE_AHEAD_LOGGING

Database open flag: when set, the database is opened with write-ahead logging enabled by default.

int MODE_MULTI_PROCESS

This constant was deprecated in API level 23. MODE_MULTI_PROCESS does not work reliably in some versions of Android, and furthermore does not provide any mechanism for reconciling concurrent modifications across processes. Applications should not attempt to use it. Instead, they should use an explicit cross-process data management approach such as ContentProvider.

int MODE_NO_LOCALIZED_COLLATORS

Database open flag: when set, the database is opened without support for localized collators.

int MODE_PRIVATE

File creation mode: the default mode, where the created file can only be accessed by the calling application (or all applications sharing the same user ID).

int MODE_WORLD_READABLE

This constant was deprecated in API level 17. Creating world-readable files is very dangerous, and likely to cause security holes in applications. It is strongly discouraged; instead, applications should use more formal mechanism for interactions such as ContentProvider, BroadcastReceiver, and Service. There are no guarantees that this access mode will remain on a file, such as when it goes through a backup and restore.

int MODE_WORLD_WRITEABLE

This constant was deprecated in API level 17. Creating world-writable files is very dangerous, and likely to cause security holes in applications. It is strongly discouraged; instead, applications should use more formal mechanism for interactions such as ContentProvider, BroadcastReceiver, and Service. There are no guarantees that this access mode will remain on a file, such as when it goes through a backup and restore.

String NETWORK_STATS_SERVICE

Use with getSystemService(java.lang.String) to retrieve a NetworkStatsManager for querying network usage stats.

String NFC_SERVICE

Use with getSystemService(java.lang.String) to retrieve a NfcManager for using NFC.

String NOTIFICATION_SERVICE

Use with getSystemService(java.lang.String) to retrieve a NotificationManager for informing the user of background events.

String NSD_SERVICE

Use with getSystemService(java.lang.String) to retrieve a NsdManager for handling management of network service discovery

String OVERLAY_SERVICE

Use with getSystemService(java.lang.String) to retrieve a OverlayManager for managing overlay packages.

String PEOPLE_SERVICE

Use with getSystemService(java.lang.String) to access a PeopleManager to interact with your published conversations.

String PERFORMANCE_HINT_SERVICE

Use with getSystemService(java.lang.String) to retrieve a PerformanceHintManager for accessing the performance hinting service.

String PERSISTENT_DATA_BLOCK_SERVICE

Use with getSystemService(java.lang.String) to retrieve a PersistentDataBlockManager instance for interacting with a storage device that lives across factory resets.

String POWER_SERVICE

Use with getSystemService(java.lang.String) to retrieve a PowerManager for controlling power management, including "wake locks," which let you keep the device on while you're running long tasks.

String PRINT_SERVICE

PrintManager for printing and managing printers and print tasks.

String PROFILING_SERVICE

Use with getSystemService(java.lang.String) to retrieve an ProfilingManager.

int RECEIVER_EXPORTED

Flag for registerReceiver(BroadcastReceiver, IntentFilter): The receiver can receive broadcasts from other Apps.

int RECEIVER_NOT_EXPORTED

Flag for registerReceiver(BroadcastReceiver, IntentFilter): The receiver cannot receive broadcasts from other Apps.

int RECEIVER_VISIBLE_TO_INSTANT_APPS

Flag for registerReceiver(BroadcastReceiver, IntentFilter): The receiver can receive broadcasts from Instant Apps.

String RESTRICTIONS_SERVICE

Use with getSystemService(java.lang.String) to retrieve a RestrictionsManager for retrieving application restrictions and requesting permissions for restricted operations.

String ROLE_SERVICE

Use with getSystemService(java.lang.String) to retrieve a RoleManager for managing roles.

String SATELLITE_SERVICE

Use with getSystemService(java.lang.String) to retrieve a SatelliteManager for accessing satellite functionality.

String SEARCH_SERVICE

Use with getSystemService(java.lang.String) to retrieve a SearchManager for handling searches.

String SECURITY_STATE_SERVICE

Use with getSystemService(java.lang.String) to retrieve a SecurityStateManager for accessing the security state manager service.

String SENSOR_SERVICE

Use with getSystemService(java.lang.String) to retrieve a SensorManager for accessing sensors.

String SHORTCUT_SERVICE

Use with getSystemService(java.lang.String) to retrieve a ShortcutManager for accessing the launcher shortcut service.

String STATUS_BAR_SERVICE

Use with getSystemService(java.lang.String) to retrieve a StatusBarManager for interacting with the status bar and quick settings.

String STORAGE_SERVICE

Use with getSystemService(java.lang.String) to retrieve a StorageManager for accessing system storage functions.

String STORAGE_STATS_SERVICE

Use with getSystemService(java.lang.String) to retrieve a StorageStatsManager for accessing system storage statistics.

String SYSTEM_HEALTH_SERVICE

Use with getSystemService(java.lang.String) to retrieve a SystemHealthManager for accessing system health (battery, power, memory, etc) metrics.

String TELECOM_SERVICE

Use with getSystemService(java.lang.String) to retrieve a TelecomManager to manage telecom-related features of the device.

String TELEPHONY_IMS_SERVICE

Use with getSystemService(java.lang.String) to retrieve an ImsManager.

String TELEPHONY_SERVICE

Use with getSystemService(java.lang.String) to retrieve a TelephonyManager for handling management the telephony features of the device.

String TELEPHONY_SUBSCRIPTION_SERVICE

Use with getSystemService(java.lang.String) to retrieve a SubscriptionManager for handling management the telephony subscriptions of the device.

String TEXT_CLASSIFICATION_SERVICE

Use with getSystemService(java.lang.String) to retrieve a TextClassificationManager for text classification services.

String TEXT_SERVICES_MANAGER_SERVICE

Use with getSystemService(java.lang.String) to retrieve a TextServicesManager for accessing text services.

String TV_AD_SERVICE

Use with getSystemService(java.lang.String) to retrieve a TvAdManager for interacting with TV client-side advertisement services on the device.

String TV_INPUT_SERVICE

Use with getSystemService(java.lang.String) to retrieve a TvInputManager for interacting with TV inputs on the device.

String TV_INTERACTIVE_APP_SERVICE

Use with getSystemService(java.lang.String) to retrieve a TvInteractiveAppManager for interacting with TV interactive applications on the device.

String UI_MODE_SERVICE

Use with getSystemService(java.lang.String) to retrieve a UiModeManager for controlling UI modes.

String USAGE_STATS_SERVICE

Use with getSystemService(java.lang.String) to retrieve a UsageStatsManager for querying device usage stats.

String USB_SERVICE

Use with getSystemService(java.lang.String) to retrieve a UsbManager for access to USB devices (as a USB host) and for controlling this device's behavior as a USB device.

String USER_SERVICE

Use with getSystemService(java.lang.String) to retrieve a UserManager for managing users on devices that support multiple users.

String VIBRATOR_MANAGER_SERVICE

Use with getSystemService(java.lang.String) to retrieve a VibratorManager for accessing the device vibrators, interacting with individual ones and playing synchronized effects on multiple vibrators.

String VIBRATOR_SERVICE

This constant was deprecated in API level 31. Use VibratorManager to retrieve the default system vibrator.

String VIRTUAL_DEVICE_SERVICE

Use with getSystemService(java.lang.String) to retrieve a VirtualDeviceManager for managing virtual devices.

String VPN_MANAGEMENT_SERVICE

Use with getSystemService(java.lang.String) to retrieve a VpnManager to manage profiles for the platform built-in VPN.

String WALLPAPER_SERVICE

Use with getSystemService(java.lang.String) to retrieve a com.android.server.WallpaperService for accessing wallpapers.

String WIFI_AWARE_SERVICE

Use with getSystemService(java.lang.String) to retrieve a WifiAwareManager for handling management of Wi-Fi Aware.

String WIFI_P2P_SERVICE

Use with getSystemService(java.lang.String) to retrieve a WifiP2pManager for handling management of Wi-Fi peer-to-peer connections.

String WIFI_RTT_RANGING_SERVICE

Use with getSystemService(java.lang.String) to retrieve a WifiRttManager for ranging devices with wifi.

String WIFI_SERVICE

Use with getSystemService(java.lang.String) to retrieve a WifiManager for handling management of Wi-Fi access.

String WINDOW_SERVICE

Use with getSystemService(java.lang.String) to retrieve a WindowManager for accessing the system's window manager.

int TRIM_MEMORY_BACKGROUND

Level for onTrimMemory(int): the process has gone on to the LRU list.

int TRIM_MEMORY_COMPLETE

This constant was deprecated in API level 35. Apps are not notified of this level since API level 34

int TRIM_MEMORY_MODERATE

This constant was deprecated in API level 35. Apps are not notified of this level since API level 34

int TRIM_MEMORY_RUNNING_CRITICAL

This constant was deprecated in API level 35. Apps are not notified of this level since API level 34

int TRIM_MEMORY_RUNNING_LOW

This constant was deprecated in API level 35. Apps are not notified of this level since API level 34

int TRIM_MEMORY_RUNNING_MODERATE

This constant was deprecated in API level 35. Apps are not notified of this level since API level 34

int TRIM_MEMORY_UI_HIDDEN

Level for onTrimMemory(int): the process had been showing a user interface, and is no longer doing so.

Public constructors

NotificationListenerService()

Public methods

final void cancelAllNotifications()

Inform the notification manager about dismissal of all notifications.

final void cancelNotification(String pkg, String tag, int id)

This method was deprecated in API level 21. Use cancelNotification(java.lang.String) instead. Beginning with Build.VERSION_CODES.LOLLIPOP this method will no longer cancel the notification. It will continue to cancel the notification for applications whose targetSdkVersion is earlier than Build.VERSION_CODES.LOLLIPOP.

final void cancelNotification(String key)

Inform the notification manager about dismissal of a single notification.

final void cancelNotifications(String[] keys)

Inform the notification manager about dismissal of specific notifications.

final void clearRequestedListenerHints()

Clears listener hints set via getCurrentListenerHints().

final NotificationChannel createConversationNotificationChannelForPackage(String pkg, UserHandle user, String parentChannelId, String conversationId)

Creates a conversation notification channel for a given package for a given user.

StatusBarNotification[] getActiveNotifications(String[] keys)

Request one or more notifications by key.

StatusBarNotification[] getActiveNotifications()

Request the list of outstanding notifications (that is, those that are visible to the current user).

final int getCurrentInterruptionFilter()

Gets the current notification interruption filter active on the host.

final int getCurrentListenerHints()

Gets the set of hints representing current state.

NotificationListenerService.RankingMap getCurrentRanking()

Returns current ranking information.

final List<NotificationChannelGroup> getNotificationChannelGroups(String pkg, UserHandle user)

Returns all notification channel groups belonging to the given package for a given user.

final List<NotificationChannel> getNotificationChannels(String pkg, UserHandle user)

Returns all notification channels belonging to the given package for a given user.

final StatusBarNotification[] getSnoozedNotifications()

Like getActiveNotifications(), but returns the list of currently snoozed notifications, for all users this listener has access to.

final void migrateNotificationFilter(int defaultTypes, List<String> disallowedPkgs)

Lets an app migrate notification filters from its app into the OS.

IBinder onBind(Intent intent)

This is not the lifecycle event you are looking for.

void onDestroy()

Called by the system to notify a Service that it is no longer used and is being removed.

void onInterruptionFilterChanged(int interruptionFilter)

Implement this method to be notified when the interruption filter changed.

void onListenerConnected()

Implement this method to learn about when the listener is enabled and connected to the notification manager.

void onListenerDisconnected()

Implement this method to learn about when the listener is disconnected from the notification manager.You will not receive any events after this call, and may only call requestRebind(android.content.ComponentName) at this time.

void onListenerHintsChanged(int hints)

Implement this method to be notified when the Listener hints change.

void onNotificationChannelGroupModified(String pkg, UserHandle user, NotificationChannelGroup group, int modificationType)

Implement this method to learn about notification channel group modifications.

void onNotificationChannelModified(String pkg, UserHandle user, NotificationChannel channel, int modificationType)

Implement this method to learn about notification channel modifications.

void onNotificationPosted(StatusBarNotification sbn, NotificationListenerService.RankingMap rankingMap)

Implement this method to learn about new notifications as they are posted by apps.

void onNotificationPosted(StatusBarNotification sbn)

Implement this method to learn about new notifications as they are posted by apps.

void onNotificationRankingUpdate(NotificationListenerService.RankingMap rankingMap)

Implement this method to be notified when the notification ranking changes.

void onNotificationRemoved(StatusBarNotification sbn)

Implement this method to learn when notifications are removed.

void onNotificationRemoved(StatusBarNotification sbn, NotificationListenerService.RankingMap rankingMap)

Implement this method to learn when notifications are removed.

void onNotificationRemoved(StatusBarNotification sbn, NotificationListenerService.RankingMap rankingMap, int reason)

Implement this method to learn when notifications are removed and why.

void onSilentStatusBarIconsVisibilityChanged(boolean hideSilentStatusIcons)

Implement this method to be notified when the behavior of silent notifications in the status bar changes.

final void requestInterruptionFilter(int interruptionFilter)

Sets the desired interruption filter.

final void requestListenerHints(int hints)

Sets the desired listener hints.

static void requestRebind(ComponentName componentName)

Request that the listener be rebound, after a previous call to requestUnbind().

static void requestUnbind(ComponentName componentName)

Request that the service be unbound.

final void requestUnbind()

Request that the service be unbound.

final void setNotificationsShown(String[] keys)

Inform the notification manager that these notifications have been viewed by the user.

final void snoozeNotification(String key, long durationMs)

Inform the notification manager about snoozing a specific notification.

final void updateNotificationChannel(String pkg, UserHandle user, NotificationChannel channel)

Updates a notification channel for a given package for a given user.

Protected methods

void attachBaseContext(Context base)

Set the base context for this ContextWrapper.

Inherited methods

void attachBaseContext(Context newBase)

Set the base context for this ContextWrapper.

void dump(FileDescriptor fd, PrintWriter writer, String[] args)

Print the Service's state into the given stream.

final Application getApplication()

Return the application that owns this service.

final int getForegroundServiceType()

If the service has become a foreground service by calling startForeground(int, android.app.Notification) or startForeground(int, android.app.Notification, int), getForegroundServiceType() returns the current foreground service type.

abstract IBinder onBind(Intent intent)

Return the communication channel to the service.

void onConfigurationChanged(Configuration newConfig)

Called by the system when the device configuration changes while your component is running.

void onCreate()

Called by the system when the service is first created.

void onDestroy()

Called by the system to notify a Service that it is no longer used and is being removed.

void onLowMemory()

This is called when the overall system is running low on memory, and actively running processes should trim their memory usage.

void onRebind(Intent intent)

Called when new clients have connected to the service, after it had previously been notified that all had disconnected in its onUnbind(Intent).

void onStart(Intent intent, int startId)

This method was deprecated in API level 15. Implement onStartCommand(android.content.Intent, int, int) instead.

int onStartCommand(Intent intent, int flags, int startId)

Called by the system every time a client explicitly starts the service by calling Context.startService(Intent), providing the arguments it supplied and a unique integer token representing the start request.

void onTaskRemoved(Intent rootIntent)

This is called if the service is currently running and the user has removed a task that comes from the service's application.

void onTimeout(int startId, int fgsType)

Callback called when a particular foreground service type has timed out.

void onTimeout(int startId)

Callback called on timeout for ServiceInfo.FOREGROUND_SERVICE_TYPE_SHORT_SERVICE.

void onTrimMemory(int level)

Called when the operating system has determined that it is a good time for a process to trim unneeded memory from its process.

boolean onUnbind(Intent intent)

Called when all clients have disconnected from a particular interface published by the service.

final void startForeground(int id, Notification notification)

If your service is started (running through Context.startService(Intent)), then also make this service run in the foreground, supplying the ongoing notification to be shown to the user while in this state.

final void startForeground(int id, Notification notification, int foregroundServiceType)

An overloaded version of startForeground(int, android.app.Notification) with additional foregroundServiceType parameter.

final void stopForeground(int notificationBehavior)

Remove this service from foreground state, allowing it to be killed if more memory is needed.

final void stopForeground(boolean removeNotification)

This method was deprecated in API level 33. call stopForeground(int) and pass either STOP_FOREGROUND_REMOVE or STOP_FOREGROUND_DETACH explicitly instead.

final void stopSelf()

Stop the service, if it was previously started.

final void stopSelf(int startId)

Old version of stopSelfResult(int) that doesn't return a result.

final boolean stopSelfResult(int startId)

Stop the service if the most recent time it was started was startId.

void attachBaseContext(Context base)

Set the base context for this ContextWrapper.

boolean bindIsolatedService(Intent service, int flags, String instanceName, Executor executor, ServiceConnection conn)

Variation of bindService(Intent, BindServiceFlags, Executor, ServiceConnection) that, in the specific case of isolated services, allows the caller to generate multiple instances of a service from a single component declaration.

boolean bindService(Intent service, int flags, Executor executor, ServiceConnection conn)

Same as bindService(Intent, ServiceConnection, int) with executor to control ServiceConnection callbacks.

boolean bindService(Intent service, ServiceConnection conn, Context.BindServiceFlags flags)

See bindService(android.content.Intent, android.content.ServiceConnection, int) Call BindServiceFlags.of(long) to obtain a BindServiceFlags object.

boolean bindService(Intent service, ServiceConnection conn, int flags)

Connects to an application service, creating it if needed.

boolean bindService(Intent service, Context.BindServiceFlags flags, Executor executor, ServiceConnection conn)

See bindService(android.content.Intent, int, java.util.concurrent.Executor, android.content.ServiceConnection) Call BindServiceFlags.of(long) to obtain a BindServiceFlags object.

int checkCallingOrSelfPermission(String permission)

Determine whether the calling process of an IPC or you have been granted a particular permission.

int checkCallingOrSelfUriPermission(Uri uri, int modeFlags)

Determine whether the calling process of an IPC or you has been granted permission to access a specific URI.

int[] checkCallingOrSelfUriPermissions(List<Uri> uris, int modeFlags)

Determine whether the calling process of an IPC or you has been granted permission to access a list of URIs.

int checkCallingPermission(String permission)

Determine whether the calling process of an IPC you are handling has been granted a particular permission.

int checkCallingUriPermission(Uri uri, int modeFlags)

Determine whether the calling process and uid has been granted permission to access a specific URI.

int[] checkCallingUriPermissions(List<Uri> uris, int modeFlags)

Determine whether the calling process and uid has been granted permission to access a list of URIs.

int checkContentUriPermissionFull(Uri uri, int pid, int uid, int modeFlags)

Determine whether a particular process and uid has been granted permission to access a specific content URI.

int checkPermission(String permission, int pid, int uid)

Determine whether the given permission is allowed for a particular process and user ID running in the system.

int checkSelfPermission(String permission)

Determine whether you have been granted a particular permission.

int checkUriPermission(Uri uri, String readPermission, String writePermission, int pid, int uid, int modeFlags)

Check both a Uri and normal permission.

int checkUriPermission(Uri uri, int pid, int uid, int modeFlags)

Determine whether a particular process and uid has been granted permission to access a specific URI.

int[] checkUriPermissions(List<Uri> uris, int pid, int uid, int modeFlags)

Determine whether a particular process and uid has been granted permission to access a list of URIs.

void clearWallpaper()

This method is deprecated. Use WallpaperManager.clear() instead.

This method requires the caller to hold the permission Manifest.permission.SET_WALLPAPER.

Context createAttributionContext(String attributionTag)

Return a new Context object for the current Context but attribute to a different tag.

Context createConfigurationContext(Configuration overrideConfiguration)

Return a new Context object for the current Context but whose resources are adjusted to match the given Configuration.

Context createContext(ContextParams contextParams)

Creates a context with specific properties and behaviors.

Context createDeviceContext(int deviceId)

Returns a new Context object from the current context but with device association given by the deviceId.

Context createDeviceProtectedStorageContext()

Return a new Context object for the current Context but whose storage APIs are backed by device-protected storage.

Context createDisplayContext(Display display)

Returns a new Context object from the current context but with resources adjusted to match the metrics of display.

Context createPackageContext(String packageName, int flags)

Return a new Context object for the given application name.

Context createWindowContext(int type, Bundle options)

Creates a Context for a non-activity window.

Context createWindowContext(Display display, int type, Bundle options)

Creates a Context for a non-activity window on the given Display.

String[] databaseList()

Returns an array of strings naming the private databases associated with this Context's application package.

boolean deleteDatabase(String name)

Delete an existing private SQLiteDatabase associated with this Context's application package.

boolean deleteFile(String name)

Delete the given private file associated with this Context's application package.

boolean deleteSharedPreferences(String name)

Delete an existing shared preferences file.

void enforceCallingOrSelfPermission(String permission, String message)

If neither you nor the calling process of an IPC you are handling has been granted a particular permission, throw a SecurityException.

void enforceCallingOrSelfUriPermission(Uri uri, int modeFlags, String message)

If the calling process of an IPC or you has not been granted permission to access a specific URI, throw SecurityException.

void enforceCallingPermission(String permission, String message)

If the calling process of an IPC you are handling has not been granted a particular permission, throw a SecurityException.

void enforceCallingUriPermission(Uri uri, int modeFlags, String message)

If the calling process and uid has not been granted permission to access a specific URI, throw SecurityException.

void enforcePermission(String permission, int pid, int uid, String message)

If the given permission is not allowed for a particular process and user ID running in the system, throw a SecurityException.

void enforceUriPermission(Uri uri, String readPermission, String writePermission, int pid, int uid, int modeFlags, String message)

Enforce both a Uri and normal permission.

void enforceUriPermission(Uri uri, int pid, int uid, int modeFlags, String message)

If a particular process and uid has not been granted permission to access a specific URI, throw SecurityException.

String[] fileList()

Returns an array of strings naming the private files associated with this Context's application package.

Context getApplicationContext()

Return the context of the single, global Application object of the current process.

ApplicationInfo getApplicationInfo()

Return the full application info for this context's package.

AssetManager getAssets()

Returns an AssetManager instance for the application's package.

AttributionSource getAttributionSource()

Context getBaseContext()
File getCacheDir()

Returns the absolute path to the application specific cache directory on the filesystem.

ClassLoader getClassLoader()

Return a class loader you can use to retrieve classes in this package.

File getCodeCacheDir()

Returns the absolute path to the application specific cache directory on the filesystem designed for storing cached code.

ContentResolver getContentResolver()

Return a ContentResolver instance for your application's package.

File getDataDir()

Returns the absolute path to the directory on the filesystem where all private files belonging to this app are stored.

File getDatabasePath(String name)

Returns the absolute path on the filesystem where a database created with openOrCreateDatabase(String, int, CursorFactory) is stored.

int getDeviceId()

Gets the device ID this context is associated with.

File getDir(String name, int mode)

Retrieve, creating if needed, a new directory in which the application can place its own custom data files.

Display getDisplay()

Get the display this context is associated with.

File getExternalCacheDir()

Returns absolute path to application-specific directory on the primary shared/external storage device where the application can place cache files it owns.

File[] getExternalCacheDirs()

Returns absolute paths to application-specific directories on all shared/external storage devices where the application can place cache files it owns.

File getExternalFilesDir(String type)

Returns the absolute path to the directory on the primary shared/external storage device where the application can place persistent files it owns.

File[] getExternalFilesDirs(String type)

Returns absolute paths to application-specific directories on all shared/external storage devices where the application can place persistent files it owns.

File[] getExternalMediaDirs()

This method is deprecated. These directories still exist and are scanned, but developers are encouraged to migrate to inserting content into a MediaStore collection directly, as any app can contribute new media to MediaStore with no permissions required, starting in Build.VERSION_CODES.Q.

File getFileStreamPath(String name)

Returns the absolute path on the filesystem where a file created with openFileOutput(String, int) is stored.

File getFilesDir()

Returns the absolute path to the directory on the filesystem where files created with openFileOutput(String, int) are stored.

Executor getMainExecutor()

Return an Executor that will run enqueued tasks on the main thread associated with this context.

Looper getMainLooper()

Return the Looper for the main thread of the current process.

File getNoBackupFilesDir()

Returns the absolute path to the directory on the filesystem similar to getFilesDir().

File getObbDir()

Return the primary shared/external storage directory where this application's OBB files (if there are any) can be found.

File[] getObbDirs()

Returns absolute paths to application-specific directories on all shared/external storage devices where the application's OBB files (if there are any) can be found.

String getPackageCodePath()

Return the full path to this context's primary Android package.

PackageManager getPackageManager()

Return PackageManager instance to find global package information.

String getPackageName()

Return the name of this application's package.

String getPackageResourcePath()

Return the full path to this context's primary Android package.

ContextParams getParams()

Return the set of parameters which this Context was created with, if it was created via createContext(android.content.ContextParams).

Resources getResources()

Returns a Resources instance for the application's package.

SharedPreferences getSharedPreferences(String name, int mode)

Retrieve and hold the contents of the preferences file 'name', returning a SharedPreferences through which you can retrieve and modify its values.

Object getSystemService(String name)

Return the handle to a system-level service by name.

String getSystemServiceName(Class<?> serviceClass)

Gets the name of the system-level service that is represented by the specified class.

Resources.Theme getTheme()

Return the Theme object associated with this Context.

Drawable getWallpaper()

This method is deprecated. Use WallpaperManager.get() instead.

int getWallpaperDesiredMinimumHeight()

This method is deprecated. Use WallpaperManager.getDesiredMinimumHeight() instead.

int getWallpaperDesiredMinimumWidth()

This method is deprecated. Use WallpaperManager.getDesiredMinimumWidth() instead.

void grantUriPermission(String toPackage, Uri uri, int modeFlags)

Grant permission to access a specific Uri to another package, regardless of whether that package has general permission to access the Uri's content provider.

boolean isDeviceProtectedStorage()

Indicates if the storage APIs of this Context are backed by device-protected storage.

boolean isRestricted()

Indicates whether this Context is restricted.

boolean moveDatabaseFrom(Context sourceContext, String name)

Move an existing database file from the given source storage context to this context.

boolean moveSharedPreferencesFrom(Context sourceContext, String name)

Move an existing shared preferences file from the given source storage context to this context.

FileInputStream openFileInput(String name)

Open a private file associated with this Context's application package for reading.

FileOutputStream openFileOutput(String name, int mode)

Open a private file associated with this Context's application package for writing.

SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler)

Open a new private SQLiteDatabase associated with this Context's application package.

SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory)

Open a new private SQLiteDatabase associated with this Context's application package.

Drawable peekWallpaper()

This method is deprecated. Use WallpaperManager.peek() instead.

void registerComponentCallbacks(ComponentCallbacks callback)

Add a new ComponentCallbacks to the base application of the Context, which will be called at the same times as the ComponentCallbacks methods of activities and other components are called.

void registerDeviceIdChangeListener(Executor executor, IntConsumer listener)

Adds a new device ID changed listener to the Context, which will be called when the device association is changed by the system.

Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter)

Register a BroadcastReceiver to be run in the main activity thread.

Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, int flags)

Register to receive intent broadcasts, with the receiver optionally being exposed to Instant Apps.

Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler, int flags)

Register to receive intent broadcasts, to run in the context of scheduler.

Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler)

Register to receive intent broadcasts, to run in the context of scheduler.

void removeStickyBroadcast(Intent intent)

This method is deprecated. Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.

void removeStickyBroadcastAsUser(Intent intent, UserHandle user)

This method is deprecated. Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.

void revokeSelfPermissionsOnKill(Collection<String> permissions)

Triggers the revocation of one or more permissions for the calling package.

void revokeUriPermission(Uri uri, int modeFlags)

Remove all permissions to access a particular content provider Uri that were previously added with grantUriPermission(String, Uri, int) or any other mechanism.

void revokeUriPermission(String targetPackage, Uri uri, int modeFlags)

Remove permissions to access a particular content provider Uri that were previously added with grantUriPermission(String, Uri, int) for a specific target package.

void sendBroadcast(Intent intent, String receiverPermission, Bundle options)

Broadcast the given intent to all interested BroadcastReceivers, allowing an optional required permission to be enforced.

void sendBroadcast(Intent intent, String receiverPermission)

Broadcast the given intent to all interested BroadcastReceivers, allowing an optional required permission to be enforced.

void sendBroadcast(Intent intent)

Broadcast the given intent to all interested BroadcastReceivers.

void sendBroadcastAsUser(Intent intent, UserHandle user)

Version of sendBroadcast(android.content.Intent) that allows you to specify the user the broadcast will be sent to.

void sendBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission)

Version of sendBroadcast(android.content.Intent, java.lang.String) that allows you to specify the user the broadcast will be sent to.

void sendOrderedBroadcast(Intent intent, String receiverPermission, String receiverAppOp, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

Version of sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle) that allows you to specify the App Op to enforce restrictions on which receivers the broadcast will be sent to.

void sendOrderedBroadcast(Intent intent, int initialCode, String receiverPermission, String receiverAppOp, BroadcastReceiver resultReceiver, Handler scheduler, String initialData, Bundle initialExtras, Bundle options)

void sendOrderedBroadcast(Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

Version of sendBroadcast(android.content.Intent) that allows you to receive data back from the broadcast.

void sendOrderedBroadcast(Intent intent, String receiverPermission, Bundle options)

Broadcast the given intent to all interested BroadcastReceivers, delivering them one at a time to allow more preferred receivers to consume the broadcast before it is delivered to less preferred receivers.

void sendOrderedBroadcast(Intent intent, String receiverPermission, Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

Version of sendBroadcast(android.content.Intent) that allows you to receive data back from the broadcast.

void sendOrderedBroadcast(Intent intent, String receiverPermission)

Broadcast the given intent to all interested BroadcastReceivers, delivering them one at a time to allow more preferred receivers to consume the broadcast before it is delivered to less preferred receivers.

void sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

Version of sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle) that allows you to specify the user the broadcast will be sent to.

void sendStickyBroadcast(Intent intent)

This method is deprecated. Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.

void sendStickyBroadcast(Intent intent, Bundle options)

This method is deprecated. Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.

void sendStickyBroadcastAsUser(Intent intent, UserHandle user)

This method is deprecated. Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.

void sendStickyOrderedBroadcast(Intent intent, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

This method is deprecated. Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.

void sendStickyOrderedBroadcastAsUser(Intent intent, UserHandle user, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

This method is deprecated. Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.

void setTheme(int resid)

Set the base theme for this context.

void setWallpaper(Bitmap bitmap)

This method is deprecated. Use WallpaperManager.set() instead.

This method requires the caller to hold the permission Manifest.permission.SET_WALLPAPER.

void setWallpaper(InputStream data)

This method is deprecated. Use WallpaperManager.set() instead.

This method requires the caller to hold the permission Manifest.permission.SET_WALLPAPER.

void startActivities(Intent[] intents, Bundle options)

Launch multiple new activities.

void startActivities(Intent[] intents)

Same as startActivities(android.content.Intent[], android.os.Bundle) with no options specified.

void startActivity(Intent intent)

Same as startActivity(android.content.Intent, android.os.Bundle) with no options specified.

void startActivity(Intent intent, Bundle options)

Launch a new activity.

ComponentName startForegroundService(Intent service)

Similar to startService(android.content.Intent), but with an implicit promise that the Service will call startForeground(int, android.app.Notification) once it begins running.

boolean startInstrumentation(ComponentName className, String profileFile, Bundle arguments)

Start executing an Instrumentation class.

void startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags)

Same as startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle) with no options specified.

void startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options)

Like startActivity(android.content.Intent, android.os.Bundle), but taking a IntentSender to start.

ComponentName startService(Intent service)

Request that a given application service be started.

boolean stopService(Intent name)

Request that a given application service be stopped.

void unbindService(ServiceConnection conn)

Disconnect from an application service.

void unregisterComponentCallbacks(ComponentCallbacks callback)

Remove a ComponentCallbacks object that was previously registered with registerComponentCallbacks(android.content.ComponentCallbacks).

void unregisterDeviceIdChangeListener(IntConsumer listener)

Removes a device ID changed listener from the Context.

void unregisterReceiver(BroadcastReceiver receiver)

Unregister a previously registered BroadcastReceiver.

void updateServiceGroup(ServiceConnection conn, int group, int importance)

For a service previously bound with bindService(Intent, BindServiceFlags, Executor, ServiceConnection) or a related method, change how the system manages that service's process in relation to other processes.

boolean bindIsolatedService(Intent service, int flags, String instanceName, Executor executor, ServiceConnection conn)

Variation of bindService(Intent, BindServiceFlags, Executor, ServiceConnection) that, in the specific case of isolated services, allows the caller to generate multiple instances of a service from a single component declaration.

boolean bindIsolatedService(Intent service, Context.BindServiceFlags flags, String instanceName, Executor executor, ServiceConnection conn)

See bindIsolatedService(android.content.Intent, int, java.lang.String, java.util.concurrent.Executor, android.content.ServiceConnection) Call BindServiceFlags.of(long) to obtain a BindServiceFlags object.

boolean bindService(Intent service, int flags, Executor executor, ServiceConnection conn)

Same as bindService(Intent, ServiceConnection, int) with executor to control ServiceConnection callbacks.

boolean bindService(Intent service, ServiceConnection conn, Context.BindServiceFlags flags)

See bindService(android.content.Intent, android.content.ServiceConnection, int) Call BindServiceFlags.of(long) to obtain a BindServiceFlags object.

abstract boolean bindService(Intent service, ServiceConnection conn, int flags)

Connects to an application service, creating it if needed.

boolean bindService(Intent service, Context.BindServiceFlags flags, Executor executor, ServiceConnection conn)

See bindService(android.content.Intent, int, java.util.concurrent.Executor, android.content.ServiceConnection) Call BindServiceFlags.of(long) to obtain a BindServiceFlags object.

boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags, UserHandle user)

Binds to a service in the given user in the same manner as bindService(Intent, BindServiceFlags, Executor, ServiceConnection).

boolean bindServiceAsUser(Intent service, ServiceConnection conn, Context.BindServiceFlags flags, UserHandle user)

See bindServiceAsUser(android.content.Intent, android.content.ServiceConnection, int, android.os.UserHandle) Call BindServiceFlags.of(long) to obtain a BindServiceFlags object.

abstract int checkCallingOrSelfPermission(String permission)

Determine whether the calling process of an IPC or you have been granted a particular permission.

abstract int checkCallingOrSelfUriPermission(Uri uri, int modeFlags)

Determine whether the calling process of an IPC or you has been granted permission to access a specific URI.

int[] checkCallingOrSelfUriPermissions(List<Uri> uris, int modeFlags)

Determine whether the calling process of an IPC or you has been granted permission to access a list of URIs.

abstract int checkCallingPermission(String permission)

Determine whether the calling process of an IPC you are handling has been granted a particular permission.

abstract int checkCallingUriPermission(Uri uri, int modeFlags)

Determine whether the calling process and uid has been granted permission to access a specific URI.

int[] checkCallingUriPermissions(List<Uri> uris, int modeFlags)

Determine whether the calling process and uid has been granted permission to access a list of URIs.

int checkContentUriPermissionFull(Uri uri, int pid, int uid, int modeFlags)

Determine whether a particular process and uid has been granted permission to access a specific content URI.

abstract int checkPermission(String permission, int pid, int uid)

Determine whether the given permission is allowed for a particular process and user ID running in the system.

abstract int checkSelfPermission(String permission)

Determine whether you have been granted a particular permission.

abstract int checkUriPermission(Uri uri, String readPermission, String writePermission, int pid, int uid, int modeFlags)

Check both a Uri and normal permission.

abstract int checkUriPermission(Uri uri, int pid, int uid, int modeFlags)

Determine whether a particular process and uid has been granted permission to access a specific URI.

int[] checkUriPermissions(List<Uri> uris, int pid, int uid, int modeFlags)

Determine whether a particular process and uid has been granted permission to access a list of URIs.

abstract void clearWallpaper()

This method was deprecated in API level 15. Use WallpaperManager.clear() instead.

This method requires the caller to hold the permission Manifest.permission.SET_WALLPAPER.

Context createAttributionContext(String attributionTag)

Return a new Context object for the current Context but attribute to a different tag.

abstract Context createConfigurationContext(Configuration overrideConfiguration)

Return a new Context object for the current Context but whose resources are adjusted to match the given Configuration.

Context createContext(ContextParams contextParams)

Creates a context with specific properties and behaviors.

abstract Context createContextForSplit(String splitName)

Return a new Context object for the given split name.

Context createDeviceContext(int deviceId)

Returns a new Context object from the current context but with device association given by the deviceId.

abstract Context createDeviceProtectedStorageContext()

Return a new Context object for the current Context but whose storage APIs are backed by device-protected storage.

abstract Context createDisplayContext(Display display)

Returns a new Context object from the current context but with resources adjusted to match the metrics of display.

abstract Context createPackageContext(String packageName, int flags)

Return a new Context object for the given application name.

Context createWindowContext(int type, Bundle options)

Creates a Context for a non-activity window.

Context createWindowContext(Display display, int type, Bundle options)

Creates a Context for a non-activity window on the given Display.

abstract String[] databaseList()

Returns an array of strings naming the private databases associated with this Context's application package.

abstract boolean deleteDatabase(String name)

Delete an existing private SQLiteDatabase associated with this Context's application package.

abstract boolean deleteFile(String name)

Delete the given private file associated with this Context's application package.

abstract boolean deleteSharedPreferences(String name)

Delete an existing shared preferences file.

abstract void enforceCallingOrSelfPermission(String permission, String message)

If neither you nor the calling process of an IPC you are handling has been granted a particular permission, throw a SecurityException.

abstract void enforceCallingOrSelfUriPermission(Uri uri, int modeFlags, String message)

If the calling process of an IPC or you has not been granted permission to access a specific URI, throw SecurityException.

abstract void enforceCallingPermission(String permission, String message)

If the calling process of an IPC you are handling has not been granted a particular permission, throw a SecurityException.

abstract void enforceCallingUriPermission(Uri uri, int modeFlags, String message)

If the calling process and uid has not been granted permission to access a specific URI, throw SecurityException.

abstract void enforcePermission(String permission, int pid, int uid, String message)

If the given permission is not allowed for a particular process and user ID running in the system, throw a SecurityException.

abstract void enforceUriPermission(Uri uri, String readPermission, String writePermission, int pid, int uid, int modeFlags, String message)

Enforce both a Uri and normal permission.

abstract void enforceUriPermission(Uri uri, int pid, int uid, int modeFlags, String message)

If a particular process and uid has not been granted permission to access a specific URI, throw SecurityException.

abstract String[] fileList()

Returns an array of strings naming the private files associated with this Context's application package.

abstract Context getApplicationContext()

Return the context of the single, global Application object of the current process.

abstract ApplicationInfo getApplicationInfo()

Return the full application info for this context's package.

abstract AssetManager getAssets()

Returns an AssetManager instance for the application's package.

AttributionSource getAttributionSource()
String getAttributionTag()

Attribution can be used in complex apps to logically separate parts of the app.

abstract File getCacheDir()

Returns the absolute path to the application specific cache directory on the filesystem.

abstract ClassLoader getClassLoader()

Return a class loader you can use to retrieve classes in this package.

abstract File getCodeCacheDir()

Returns the absolute path to the application specific cache directory on the filesystem designed for storing cached code.

final int getColor(int id)

Returns a color associated with a particular resource ID and styled for the current theme.

final ColorStateList getColorStateList(int id)

Returns a color state list associated with a particular resource ID and styled for the current theme.

abstract ContentResolver getContentResolver()

Return a ContentResolver instance for your application's package.

abstract File getDataDir()

Returns the absolute path to the directory on the filesystem where all private files belonging to this app are stored.

abstract File getDatabasePath(String name)

Returns the absolute path on the filesystem where a database created with openOrCreateDatabase(String, int, CursorFactory) is stored.

int getDeviceId()

Gets the device ID this context is associated with.

abstract File getDir(String name, int mode)

Retrieve, creating if needed, a new directory in which the application can place its own custom data files.

Display getDisplay()

Get the display this context is associated with.

final Drawable getDrawable(int id)

Returns a drawable object associated with a particular resource ID and styled for the current theme.

abstract File getExternalCacheDir()

Returns absolute path to application-specific directory on the primary shared/external storage device where the application can place cache files it owns.

abstract File[] getExternalCacheDirs()

Returns absolute paths to application-specific directories on all shared/external storage devices where the application can place cache files it owns.

abstract File getExternalFilesDir(String type)

Returns the absolute path to the directory on the primary shared/external storage device where the application can place persistent files it owns.

abstract File[] getExternalFilesDirs(String type)

Returns absolute paths to application-specific directories on all shared/external storage devices where the application can place persistent files it owns.

abstract File[] getExternalMediaDirs()

This method was deprecated in API level 30. These directories still exist and are scanned, but developers are encouraged to migrate to inserting content into a MediaStore collection directly, as any app can contribute new media to MediaStore with no permissions required, starting in Build.VERSION_CODES.Q.

abstract File getFileStreamPath(String name)

Returns the absolute path on the filesystem where a file created with openFileOutput(String, int) is stored.

abstract File getFilesDir()

Returns the absolute path to the directory on the filesystem where files created with openFileOutput(String, int) are stored.

Executor getMainExecutor()

Return an Executor that will run enqueued tasks on the main thread associated with this context.

abstract Looper getMainLooper()

Return the Looper for the main thread of the current process.

abstract File getNoBackupFilesDir()

Returns the absolute path to the directory on the filesystem similar to getFilesDir().

abstract File getObbDir()

Return the primary shared/external storage directory where this application's OBB files (if there are any) can be found.

abstract File[] getObbDirs()

Returns absolute paths to application-specific directories on all shared/external storage devices where the application's OBB files (if there are any) can be found.

String getOpPackageName()

Return the package name that should be used for AppOpsManager calls from this context, so that app ops manager's uid verification will work with the name.

abstract String getPackageCodePath()

Return the full path to this context's primary Android package.

abstract PackageManager getPackageManager()

Return PackageManager instance to find global package information.

abstract String getPackageName()

Return the name of this application's package.

abstract String getPackageResourcePath()

Return the full path to this context's primary Android package.

ContextParams getParams()

Return the set of parameters which this Context was created with, if it was created via createContext(android.content.ContextParams).

abstract Resources getResources()

Returns a Resources instance for the application's package.

abstract SharedPreferences getSharedPreferences(String name, int mode)

Retrieve and hold the contents of the preferences file 'name', returning a SharedPreferences through which you can retrieve and modify its values.

final String getString(int resId)

Returns a localized string from the application's package's default string table.

final String getString(int resId, Object... formatArgs)

Returns a localized formatted string from the application's package's default string table, substituting the format arguments as defined in Formatter and String.format(String, Object).

final <T> T getSystemService(Class<T> serviceClass)

Return the handle to a system-level service by class.

abstract Object getSystemService(String name)

Return the handle to a system-level service by name.

abstract String getSystemServiceName(Class<?> serviceClass)

Gets the name of the system-level service that is represented by the specified class.

final CharSequence getText(int resId)

Return a localized, styled CharSequence from the application's package's default string table.

abstract Resources.Theme getTheme()

Return the Theme object associated with this Context.

abstract Drawable getWallpaper()

This method was deprecated in API level 15. Use WallpaperManager.get() instead.

abstract int getWallpaperDesiredMinimumHeight()

This method was deprecated in API level 15. Use WallpaperManager.getDesiredMinimumHeight() instead.

abstract int getWallpaperDesiredMinimumWidth()

This method was deprecated in API level 15. Use WallpaperManager.getDesiredMinimumWidth() instead.

abstract void grantUriPermission(String toPackage, Uri uri, int modeFlags)

Grant permission to access a specific Uri to another package, regardless of whether that package has general permission to access the Uri's content provider.

abstract boolean isDeviceProtectedStorage()

Indicates if the storage APIs of this Context are backed by device-protected storage.

boolean isRestricted()

Indicates whether this Context is restricted.

boolean isUiContext()

Returns true if the context is a UI context which can access UI components such as WindowManager, LayoutInflater or WallpaperManager.

abstract boolean moveDatabaseFrom(Context sourceContext, String name)

Move an existing database file from the given source storage context to this context.

abstract boolean moveSharedPreferencesFrom(Context sourceContext, String name)

Move an existing shared preferences file from the given source storage context to this context.

final TypedArray obtainStyledAttributes(AttributeSet set, int[] attrs)

Retrieve styled attribute information in this Context's theme.

final TypedArray obtainStyledAttributes(AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes)

Retrieve styled attribute information in this Context's theme.

final TypedArray obtainStyledAttributes(int resid, int[] attrs)

Retrieve styled attribute information in this Context's theme.

final TypedArray obtainStyledAttributes(int[] attrs)

Retrieve styled attribute information in this Context's theme.

abstract FileInputStream openFileInput(String name)

Open a private file associated with this Context's application package for reading.

abstract FileOutputStream openFileOutput(String name, int mode)

Open a private file associated with this Context's application package for writing.

abstract SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler)

Open a new private SQLiteDatabase associated with this Context's application package.

abstract SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory)

Open a new private SQLiteDatabase associated with this Context's application package.

abstract Drawable peekWallpaper()

This method was deprecated in API level 15. Use WallpaperManager.peek() instead.

void registerComponentCallbacks(ComponentCallbacks callback)

Add a new ComponentCallbacks to the base application of the Context, which will be called at the same times as the ComponentCallbacks methods of activities and other components are called.

void registerDeviceIdChangeListener(Executor executor, IntConsumer listener)

Adds a new device ID changed listener to the Context, which will be called when the device association is changed by the system.

abstract Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter)

Register a BroadcastReceiver to be run in the main activity thread.

abstract Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, int flags)

Register to receive intent broadcasts, with the receiver optionally being exposed to Instant Apps.

abstract Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler, int flags)

Register to receive intent broadcasts, to run in the context of scheduler.

abstract Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler)

Register to receive intent broadcasts, to run in the context of scheduler.

abstract void removeStickyBroadcast(Intent intent)

This method was deprecated in API level 21. Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.

abstract void removeStickyBroadcastAsUser(Intent intent, UserHandle user)

This method was deprecated in API level 21. Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.

void revokeSelfPermissionOnKill(String permName)

Triggers the asynchronous revocation of a runtime permission.

void revokeSelfPermissionsOnKill(Collection<String> permissions)

Triggers the revocation of one or more permissions for the calling package.

abstract void revokeUriPermission(Uri uri, int modeFlags)

Remove all permissions to access a particular content provider Uri that were previously added with grantUriPermission(String, Uri, int) or any other mechanism.

abstract void revokeUriPermission(String toPackage, Uri uri, int modeFlags)

Remove permissions to access a particular content provider Uri that were previously added with grantUriPermission(String, Uri, int) for a specific target package.

void sendBroadcast(Intent intent, String receiverPermission, Bundle options)

Broadcast the given intent to all interested BroadcastReceivers, allowing an optional required permission to be enforced.

abstract void sendBroadcast(Intent intent, String receiverPermission)

Broadcast the given intent to all interested BroadcastReceivers, allowing an optional required permission to be enforced.

abstract void sendBroadcast(Intent intent)

Broadcast the given intent to all interested BroadcastReceivers.

abstract void sendBroadcastAsUser(Intent intent, UserHandle user)

Version of sendBroadcast(android.content.Intent) that allows you to specify the user the broadcast will be sent to.

abstract void sendBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission)

Version of sendBroadcast(android.content.Intent, java.lang.String) that allows you to specify the user the broadcast will be sent to.

void sendBroadcastWithMultiplePermissions(Intent intent, String[] receiverPermissions)

Broadcast the given intent to all interested BroadcastReceivers, allowing an array of required permissions to be enforced.

void sendOrderedBroadcast(Intent intent, String receiverPermission, String receiverAppOp, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

Version of sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle) that allows you to specify the App Op to enforce restrictions on which receivers the broadcast will be sent to.

abstract void sendOrderedBroadcast(Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

Version of sendBroadcast(android.content.Intent) that allows you to receive data back from the broadcast.

void sendOrderedBroadcast(Intent intent, String receiverPermission, Bundle options)

Broadcast the given intent to all interested BroadcastReceivers, delivering them one at a time to allow more preferred receivers to consume the broadcast before it is delivered to less preferred receivers.

void sendOrderedBroadcast(Intent intent, String receiverPermission, Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

Version of sendBroadcast(android.content.Intent) that allows you to receive data back from the broadcast.

abstract void sendOrderedBroadcast(Intent intent, String receiverPermission)

Broadcast the given intent to all interested BroadcastReceivers, delivering them one at a time to allow more preferred receivers to consume the broadcast before it is delivered to less preferred receivers.

abstract void sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

Version of sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle) that allows you to specify the user the broadcast will be sent to.

abstract void sendStickyBroadcast(Intent intent)

This method was deprecated in API level 21. Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.

void sendStickyBroadcast(Intent intent, Bundle options)

This method was deprecated in API level 31. Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.

abstract void sendStickyBroadcastAsUser(Intent intent, UserHandle user)

This method was deprecated in API level 21. Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.

abstract void sendStickyOrderedBroadcast(Intent intent, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

This method was deprecated in API level 21. Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.

abstract void sendStickyOrderedBroadcastAsUser(Intent intent, UserHandle user, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

This method was deprecated in API level 21. Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.

abstract void setTheme(int resid)

Set the base theme for this context.

abstract void setWallpaper(Bitmap bitmap)

This method was deprecated in API level 15. Use WallpaperManager.set() instead.

This method requires the caller to hold the permission Manifest.permission.SET_WALLPAPER.

abstract void setWallpaper(InputStream data)

This method was deprecated in API level 15. Use WallpaperManager.set() instead.

This method requires the caller to hold the permission Manifest.permission.SET_WALLPAPER.

abstract void startActivities(Intent[] intents, Bundle options)

Launch multiple new activities.

abstract void startActivities(Intent[] intents)

Same as startActivities(android.content.Intent[], android.os.Bundle) with no options specified.

abstract void startActivity(Intent intent)

Same as startActivity(android.content.Intent, android.os.Bundle) with no options specified.

abstract void startActivity(Intent intent, Bundle options)

Launch a new activity.

abstract ComponentName startForegroundService(Intent service)

Similar to startService(android.content.Intent), but with an implicit promise that the Service will call startForeground(int, android.app.Notification) once it begins running.

abstract boolean startInstrumentation(ComponentName className, String profileFile, Bundle arguments)

Start executing an Instrumentation class.

abstract void startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags)

Same as startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle) with no options specified.

abstract void startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options)

Like startActivity(android.content.Intent, android.os.Bundle), but taking a IntentSender to start.

abstract ComponentName startService(Intent service)

Request that a given application service be started.

abstract boolean stopService(Intent service)

Request that a given application service be stopped.

abstract void unbindService(ServiceConnection conn)

Disconnect from an application service.

void unregisterComponentCallbacks(ComponentCallbacks callback)

Remove a ComponentCallbacks object that was previously registered with registerComponentCallbacks(android.content.ComponentCallbacks).

void unregisterDeviceIdChangeListener(IntConsumer listener)

Removes a device ID changed listener from the Context.

abstract void unregisterReceiver(BroadcastReceiver receiver)

Unregister a previously registered BroadcastReceiver.

void updateServiceGroup(ServiceConnection conn, int group, int importance)

For a service previously bound with bindService(Intent, BindServiceFlags, Executor, ServiceConnection) or a related method, change how the system manages that service's process in relation to other processes.

Object clone()

Creates and returns a copy of this object.

boolean equals(Object obj)

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

void finalize()

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

final Class<?> getClass()

Returns the runtime class of this Object.

int hashCode()

Returns a hash code value for the object.

final void notify()

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

final void notifyAll()

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

String toString()

Returns a string representation of the object.

final void wait(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 wait(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 wait()

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

abstract void onTrimMemory(int level)

Called when the operating system has determined that it is a good time for a process to trim unneeded memory from its process.

abstract void onConfigurationChanged(Configuration newConfig)

Called by the system when the device configuration changes while your component is running.

abstract void onLowMemory()

This method was deprecated in API level 35. Since API level 14 this is superseded by ComponentCallbacks2.onTrimMemory. Since API level 34 this is never called. If you're overriding ComponentCallbacks2#onTrimMemory and your minSdkVersion is greater than API 14, you can provide an empty implementation for this method.

Constants

ACTION_SETTINGS_HOME

Added in API level 34
public static final String ACTION_SETTINGS_HOME

An optional activity intent action that shows additional settings for what notifications should be processed by this notification listener service. If defined, the OS may link to this activity from the system notification listener service filter settings page.

Constant Value: "android.service.notification.action.SETTINGS_HOME"

FLAG_FILTER_TYPE_ALERTING

Added in API level 31
public static final int FLAG_FILTER_TYPE_ALERTING

A flag value indicating that this notification listener can see altering type notifications.

Constant Value: 2 (0x00000002)

FLAG_FILTER_TYPE_CONVERSATIONS

Added in API level 31
public static final int FLAG_FILTER_TYPE_CONVERSATIONS

A flag value indicating that this notification listener can see conversation type notifications.

Constant Value: 1 (0x00000001)

FLAG_FILTER_TYPE_ONGOING

Added in API level 31
public static final int FLAG_FILTER_TYPE_ONGOING

A flag value indicating that this notification listener can see important ( > NotificationManager.IMPORTANCE_MIN) ongoing type notifications.

Constant Value: 8 (0x00000008)

FLAG_FILTER_TYPE_SILENT

Added in API level 31
public static final int FLAG_FILTER_TYPE_SILENT

A flag value indicating that this notification listener can see silent type notifications.

Constant Value: 4 (0x00000004)

HINT_HOST_DISABLE_CALL_EFFECTS

Added in API level 24
public static final int HINT_HOST_DISABLE_CALL_EFFECTS

Listener hints constant - the primary device UI should disable phone call sounds, but not notification sound. This does not change the interruption filter, only the effects. *

Constant Value: 4 (0x00000004)

HINT_HOST_DISABLE_EFFECTS

Added in API level 21
public static final int HINT_HOST_DISABLE_EFFECTS

Listener hints constant - the primary device UI should disable notification sound, vibrating and other visual or aural effects. This does not change the interruption filter, only the effects. *

Constant Value: 1 (0x00000001)

HINT_HOST_DISABLE_NOTIFICATION_EFFECTS

Added in API level 24
public static final int HINT_HOST_DISABLE_NOTIFICATION_EFFECTS

Listener hints constant - the primary device UI should disable notification sound, but not phone calls. This does not change the interruption filter, only the effects. *

Constant Value: 2 (0x00000002)

INTERRUPTION_FILTER_ALARMS

Added in API level 23
public static final int INTERRUPTION_FILTER_ALARMS

Interruption filter constant - Alarms only interruption filter.

Constant Value: 4 (0x00000004)

INTERRUPTION_FILTER_ALL

Added in API level 21
public static final int INTERRUPTION_FILTER_ALL

Interruption filter constant - Normal interruption filter.

Constant Value: 1 (0x00000001)

INTERRUPTION_FILTER_NONE

Added in API level 21
public static final int INTERRUPTION_FILTER_NONE

Interruption filter constant - No interruptions filter.

Constant Value: 3 (0x00000003)

INTERRUPTION_FILTER_PRIORITY

Added in API level 21
public static final int INTERRUPTION_FILTER_PRIORITY

Interruption filter constant - Priority interruption filter.

Constant Value: 2 (0x00000002)

INTERRUPTION_FILTER_UNKNOWN

Added in API level 23
public static final int INTERRUPTION_FILTER_UNKNOWN

Interruption filter constant - returned when the value is unavailable for any reason. For example, before the notification listener is connected.

Constant Value: 0 (0x00000000)

META_DATA_DEFAULT_AUTOBIND

Added in API level 34
public static final String META_DATA_DEFAULT_AUTOBIND

The name of the meta-data tag containing a boolean value that is used to decide if this listener should be automatically bound by default. If the value is 'false', the listener can be bound on demand using requestRebind(ComponentName)

An absent value means that the default is 'true'

Constant Value: "android.service.notification.default_autobind_listenerservice"

META_DATA_DEFAULT_FILTER_TYPES

Added in API level 31
public static final String META_DATA_DEFAULT_FILTER_TYPES

The name of the meta-data tag containing a pipe separated list of default integer notification types or "ongoing", "conversations", "alerting", or "silent" that should be provided to this listener. See FLAG_FILTER_TYPE_ONGOING, FLAG_FILTER_TYPE_CONVERSATIONS, {@link #FLAG_FILTER_TYPE_ALERTING), and {@link #FLAG_FILTER_TYPE_SILENT}.

This value will only be read if the app has not previously specified a default type list, and if the user has not overridden the allowed types.

An absent value means 'allow all types'. A present but empty value means 'allow no types'.

Constant Value: "android.service.notification.default_filter_types"

META_DATA_DISABLED_FILTER_TYPES

Added in API level 31
public static final String META_DATA_DISABLED_FILTER_TYPES

The name of the meta-data tag containing a comma separated list of default integer notification types that this listener never wants to receive. See FLAG_FILTER_TYPE_ONGOING, FLAG_FILTER_TYPE_CONVERSATIONS, {@link #FLAG_FILTER_TYPE_ALERTING), and {@link #FLAG_FILTER_TYPE_SILENT}.

Types provided in this list will appear as 'off' and 'disabled' in the user interface, so users don't enable a type that the listener will never bridge to their paired devices.

Constant Value: "android.service.notification.disabled_filter_types"

NOTIFICATION_CHANNEL_OR_GROUP_ADDED

Added in API level 26
public static final int NOTIFICATION_CHANNEL_OR_GROUP_ADDED

Channel or group modification reason provided to onNotificationChannelModified(java.lang.String, android.os.UserHandle, android.app.NotificationChannel, int) or onNotificationChannelGroupModified(java.lang.String, android.os.UserHandle, android.app.NotificationChannelGroup, int)- the provided object was created.

Constant Value: 1 (0x00000001)

NOTIFICATION_CHANNEL_OR_GROUP_DELETED

Added in API level 26
public static final int NOTIFICATION_CHANNEL_OR_GROUP_DELETED

Channel or group modification reason provided to onNotificationChannelModified(java.lang.String, android.os.UserHandle, android.app.NotificationChannel, int) or onNotificationChannelGroupModified(java.lang.String, android.os.UserHandle, android.app.NotificationChannelGroup, int)- the provided object was deleted.

Constant Value: 3 (0x00000003)

NOTIFICATION_CHANNEL_OR_GROUP_UPDATED

Added in API level 26
public static final int NOTIFICATION_CHANNEL_OR_GROUP_UPDATED

Channel or group modification reason provided to onNotificationChannelModified(java.lang.String, android.os.UserHandle, android.app.NotificationChannel, int) or onNotificationChannelGroupModified(java.lang.String, android.os.UserHandle, android.app.NotificationChannelGroup, int) - the provided object was updated.

Constant Value: 2 (0x00000002)

REASON_APP_CANCEL

Added in API level 26
public static final int REASON_APP_CANCEL

Notification was canceled by the app canceling this specific notification.

Constant Value: 8 (0x00000008)

REASON_APP_CANCEL_ALL

Added in API level 26
public static final int REASON_APP_CANCEL_ALL

Notification was canceled by the app cancelling all its notifications.

Constant Value: 9 (0x00000009)

REASON_ASSISTANT_CANCEL

Added in API level 33
public static final int REASON_ASSISTANT_CANCEL

Notification was canceled due to an assistant adjustment update.

Constant Value: 22 (0x00000016)

REASON_CANCEL

Added in API level 26
public static final int REASON_CANCEL

Notification was canceled by the status bar reporting a user dismissal.

Constant Value: 2 (0x00000002)

REASON_CANCEL_ALL

Added in API level 26
public static final int REASON_CANCEL_ALL

Notification was canceled by the status bar reporting a user dismiss all.

Constant Value: 3 (0x00000003)

REASON_CHANNEL_BANNED

Added in API level 26
public static final int REASON_CHANNEL_BANNED

Notification was canceled by the user banning the channel.

Constant Value: 17 (0x00000011)

REASON_CHANNEL_REMOVED

Added in API level 31
public static final int REASON_CHANNEL_REMOVED

Notification was canceled due to the backing channel being deleted

Constant Value: 20 (0x00000014)

REASON_CLEAR_DATA

Added in API level 31
public static final int REASON_CLEAR_DATA

Notification was canceled due to the app's storage being cleared

Constant Value: 21 (0x00000015)

REASON_CLICK

Added in API level 26
public static final int REASON_CLICK

Notification was canceled by the status bar reporting a notification click.

Constant Value: 1 (0x00000001)

REASON_ERROR

Added in API level 26
public static final int REASON_ERROR

Notification was canceled by the status bar reporting an inflation error.

Constant Value: 4 (0x00000004)

REASON_GROUP_OPTIMIZATION

Added in API level 26
public static final int REASON_GROUP_OPTIMIZATION

Notification was canceled because it was an invisible member of a group.

Constant Value: 13 (0x0000000d)

REASON_GROUP_SUMMARY_CANCELED

Added in API level 26
public static final int REASON_GROUP_SUMMARY_CANCELED

Notification was canceled because it was a member of a canceled group.

Constant Value: 12 (0x0000000c)

REASON_LISTENER_CANCEL

Added in API level 26
public static final int REASON_LISTENER_CANCEL

Notification was canceled by a listener reporting a user dismissal.

Constant Value: 10 (0x0000000a)

REASON_LISTENER_CANCEL_ALL

Added in API level 26
public static final int REASON_LISTENER_CANCEL_ALL

Notification was canceled by a listener reporting a user dismiss all.

Constant Value: 11 (0x0000000b)

REASON_LOCKDOWN

Added in API level 34
public static final int REASON_LOCKDOWN

Notification was canceled when entering lockdown mode, which turns off Smart Lock, fingerprint unlocking, and notifications on the lock screen. All the listeners shall ensure the canceled notifications are indeed removed on their end to prevent data leaking. When the user exits the lockdown mode, the removed notifications (due to lockdown) will be restored via NotificationListeners#notifyPostedLocked()

Constant Value: 23 (0x00000017)

REASON_PACKAGE_BANNED

Added in API level 26
public static final int REASON_PACKAGE_BANNED

Notification was canceled by the user banning the package.

Constant Value: 7 (0x00000007)

REASON_PACKAGE_CHANGED

Added in API level 26
public static final int REASON_PACKAGE_CHANGED

Notification was canceled by the package manager modifying the package.

Constant Value: 5 (0x00000005)

REASON_PACKAGE_SUSPENDED

Added in API level 26
public static final int REASON_PACKAGE_SUSPENDED

Notification was canceled by the device administrator suspending the package.

Constant Value: 14 (0x0000000e)

REASON_PROFILE_TURNED_OFF

Added in API level 26
public static final int REASON_PROFILE_TURNED_OFF

Notification was canceled by the owning managed profile being turned off.

Constant Value: 15 (0x0000000f)

REASON_SNOOZED

Added in API level 26
public static final int REASON_SNOOZED

Notification was snoozed.

Constant Value: 18 (0x00000012)

REASON_TIMEOUT

Added in API level 26
public static final int REASON_TIMEOUT

Notification was canceled due to timeout

Constant Value: 19 (0x00000013)

REASON_UNAUTOBUNDLED

Added in API level 26
public static final int REASON_UNAUTOBUNDLED

Autobundled summary notification was canceled because its group was unbundled

Constant Value: 16 (0x00000010)

REASON_USER_STOPPED

Added in API level 26
public static final int REASON_USER_STOPPED

Notification was canceled by the owning user context being stopped.

Constant Value: 6 (0x00000006)

SERVICE_INTERFACE

Added in API level 18
public static final String SERVICE_INTERFACE

The Intent that must be declared as handled by the service.

Constant Value: "android.service.notification.NotificationListenerService"

SUPPRESSED_EFFECT_SCREEN_OFF

Added in API level 24
Deprecated in API level 28
public static final int SUPPRESSED_EFFECT_SCREEN_OFF

This constant was deprecated in API level 28.
Use the more specific visual effects in NotificationManager.Policy.

Whether notification suppressed by DND should not interruption visually when the screen is off.

Constant Value: 1 (0x00000001)

SUPPRESSED_EFFECT_SCREEN_ON

Added in API level 24
Deprecated in API level 28
public static final int SUPPRESSED_EFFECT_SCREEN_ON

This constant was deprecated in API level 28.
Use the more specific visual effects in NotificationManager.Policy.

Whether notification suppressed by DND should not interruption visually when the screen is on.

Constant Value: 2 (0x00000002)

Public constructors

NotificationListenerService

public NotificationListenerService ()

Public methods

cancelAllNotifications

Added in API level 18
public final void cancelAllNotifications ()

Inform the notification manager about dismissal of all notifications.

Use this if your listener has a user interface that allows the user to dismiss all notifications, similar to the behavior of Android's status bar and notification panel. It should be called after the user invokes the "dismiss all" function of your UI; upon being informed, the notification manager will actually remove all active notifications and you will get multiple onNotificationRemoved(android.service.notification.StatusBarNotification) callbacks.

The service should wait for the onListenerConnected() event before performing this operation.

cancelNotification

Added in API level 18
Deprecated in API level 21
public final void cancelNotification (String pkg, 
                String tag, 
                int id)

This method was deprecated in API level 21.
Use cancelNotification(java.lang.String) instead. Beginning with Build.VERSION_CODES.LOLLIPOP this method will no longer cancel the notification. It will continue to cancel the notification for applications whose targetSdkVersion is earlier than Build.VERSION_CODES.LOLLIPOP.

Inform the notification manager about dismissal of a single notification.

Use this if your listener has a user interface that allows the user to dismiss individual notifications, similar to the behavior of Android's status bar and notification panel. It should be called after the user dismisses a single notification using your UI; upon being informed, the notification manager will actually remove the notification and you will get an onNotificationRemoved(android.service.notification.StatusBarNotification) callback.

Note: If your listener allows the user to fire a notification's Notification.contentIntent by tapping/clicking/etc., you should call this method at that time if the Notification in question has the Notification.FLAG_AUTO_CANCEL flag set.

The service should wait for the onListenerConnected() event before performing this operation.

Parameters
pkg String: Package of the notifying app.

tag String: Tag of the notification as specified by the notifying app in NotificationManager.notify(String, int, android.app.Notification).

id int: ID of the notification as specified by the notifying app in NotificationManager.notify(String, int, android.app.Notification).

cancelNotification

Added in API level 21
public final void cancelNotification (String key)

Inform the notification manager about dismissal of a single notification.

Use this if your listener has a user interface that allows the user to dismiss individual notifications, similar to the behavior of Android's status bar and notification panel. It should be called after the user dismisses a single notification using your UI; upon being informed, the notification manager will actually remove the notification and you will get an onNotificationRemoved(android.service.notification.StatusBarNotification) callback.

Note: If your listener allows the user to fire a notification's Notification.contentIntent by tapping/clicking/etc., you should call this method at that time if the Notification in question has the Notification.FLAG_AUTO_CANCEL flag set.

The service should wait for the onListenerConnected() event before performing this operation.

Parameters
key String: Notification to dismiss from StatusBarNotification.getKey().

cancelNotifications

Added in API level 21
public final void cancelNotifications (String[] keys)

Inform the notification manager about dismissal of specific notifications.

Use this if your listener has a user interface that allows the user to dismiss multiple notifications at once.

The service should wait for the onListenerConnected() event before performing this operation.

Parameters
keys String: Notifications to dismiss, or null to dismiss all.

clearRequestedListenerHints

Added in API level 29
public final void clearRequestedListenerHints ()

Clears listener hints set via getCurrentListenerHints().

The service should wait for the onListenerConnected() event before performing this operation.

createConversationNotificationChannelForPackage

public final NotificationChannel createConversationNotificationChannelForPackage (String pkg, 
                UserHandle user, 
                String parentChannelId, 
                String conversationId)

Creates a conversation notification channel for a given package for a given user.

This method will throw a security exception if you don't have access to notifications for the given user.

The caller must have device or be the notification assistant in order to use this method.

Parameters
pkg String: The package the channel belongs to. This value cannot be null.

user UserHandle: The user the channel belongs to. This value cannot be null.

parentChannelId String: The parent channel id of the conversation channel belongs to. This value cannot be null.

conversationId String: The conversation id of the conversation channel. This value cannot be null.

Returns
NotificationChannel The created conversation channel. This value may be null.

getActiveNotifications

Added in API level 21
public StatusBarNotification[] getActiveNotifications (String[] keys)

Request one or more notifications by key. Useful if you have been keeping track of notifications but didn't want to retain the bits, and now need to go back and extract more data out of those notifications.

The service should wait for the onListenerConnected() event before performing this operation.

Parameters
keys String: the keys of the notifications to request

Returns
StatusBarNotification[] An array of notifications corresponding to the requested keys, in the same order as the key list.

getActiveNotifications

Added in API level 18
public StatusBarNotification[] getActiveNotifications ()

Request the list of outstanding notifications (that is, those that are visible to the current user). Useful when you don't know what's already been posted.

The service should wait for the onListenerConnected() event before performing this operation.

Returns
StatusBarNotification[] An array of active notifications, sorted in natural order.

getCurrentInterruptionFilter

Added in API level 21
public final int getCurrentInterruptionFilter ()

Gets the current notification interruption filter active on the host.

The interruption filter defines which notifications are allowed to interrupt the user (e.g. via sound & vibration) and is applied globally. Listeners can find out whether a specific notification matched the interruption filter via Ranking.matchesInterruptionFilter().

The current filter may differ from the previously requested filter if the notification host does not support or refuses to apply the requested filter, or if another component changed the filter in the meantime.

Listen for updates using onInterruptionFilterChanged(int).

The service should wait for the onListenerConnected() event before performing this operation.

Returns
int One of the INTERRUPTION_FILTER_ constants, or INTERRUPTION_FILTER_UNKNOWN when unavailable.

getCurrentListenerHints

Added in API level 21
public final int getCurrentListenerHints ()

Gets the set of hints representing current state.

The current state may differ from the requested state if the hint represents state shared across all listeners or a feature the notification host does not support or refuses to grant.

The service should wait for the onListenerConnected() event before performing this operation.

Returns
int Zero or more of the HINT_ constants.

getCurrentRanking

Added in API level 21
public NotificationListenerService.RankingMap getCurrentRanking ()

Returns current ranking information.

The returned object represents the current ranking snapshot and only applies for currently active notifications.

Generally you should use the RankingMap that is passed with events such as onNotificationPosted(android.service.notification.StatusBarNotification, android.service.notification.NotificationListenerService.RankingMap), onNotificationRemoved(android.service.notification.StatusBarNotification, android.service.notification.NotificationListenerService.RankingMap), and so on. This method should only be used when needing access outside of such events, for example to retrieve the RankingMap right after initialization.

The service should wait for the onListenerConnected() event before performing this operation.

Returns
NotificationListenerService.RankingMap A RankingMap object providing access to ranking information

getNotificationChannelGroups

Added in API level 26
public final List<NotificationChannelGroup> getNotificationChannelGroups (String pkg, 
                UserHandle user)

Returns all notification channel groups belonging to the given package for a given user.

This method will throw a security exception if you don't have access to notifications for the given user.

The caller must have device or be the notification assistant in order to use this method.

Parameters
pkg String: The package to retrieve channel groups for. This value cannot be null.

user UserHandle: This value cannot be null.

getNotificationChannels

Added in API level 26
public final List<NotificationChannel> getNotificationChannels (String pkg, 
                UserHandle user)

Returns all notification channels belonging to the given package for a given user.

This method will throw a security exception if you don't have access to notifications for the given user.

The caller must have device or be the notification assistant in order to use this method.

Parameters
pkg String: The package to retrieve channels for. This value cannot be null.

user UserHandle: This value cannot be null.

getSnoozedNotifications

Added in API level 26
public final StatusBarNotification[] getSnoozedNotifications ()

Like getActiveNotifications(), but returns the list of currently snoozed notifications, for all users this listener has access to.

The service should wait for the onListenerConnected() event before performing this operation.

Returns
StatusBarNotification[] An array of snoozed notifications, sorted in natural order.

migrateNotificationFilter

Added in API level 31
public final void migrateNotificationFilter (int defaultTypes, 
                List<String> disallowedPkgs)

Lets an app migrate notification filters from its app into the OS.

This call will be ignored if the app has already migrated these settings or the user has set filters in the UI. This method is intended for user specific settings; if an app has already specified defaults types in its manifest with META_DATA_DEFAULT_FILTER_TYPES, the defaultTypes option will be ignored.

Parameters
defaultTypes int: A value representing the types of notifications that this listener should receive by default Value is either 0 or a combination of FLAG_FILTER_TYPE_CONVERSATIONS, FLAG_FILTER_TYPE_ALERTING, FLAG_FILTER_TYPE_SILENT, and FLAG_FILTER_TYPE_ONGOING

disallowedPkgs List: A list of package names whose notifications should not be seen by this listener, by default, because the listener does not process or display them, or because a user had previously disallowed these packages in the listener app's UI This value may be null.

onBind

Added in API level 18
public IBinder onBind (Intent intent)

This is not the lifecycle event you are looking for.

The service should wait for the onListenerConnected() event before performing any operations.

Parameters
intent Intent: The Intent that was used to bind to this service, as given to Context.bindService. Note that any extras that were included with the Intent at that point will not be seen here.

Returns
IBinder Return an IBinder through which clients can call on to the service.

onDestroy

Added in API level 18
public void onDestroy ()

Called by the system to notify a Service that it is no longer used and is being removed. The service should clean up any resources it holds (threads, registered receivers, etc) at this point. Upon return, there will be no more calls in to this Service object and it is effectively dead. Do not call this method directly.

onInterruptionFilterChanged

Added in API level 21
public void onInterruptionFilterChanged (int interruptionFilter)

Implement this method to be notified when the interruption filter changed.
This method must be called on the thread that originally created this UI element. This is typically the main thread of your app.

Parameters
interruptionFilter int: The current interruption filter.

onListenerConnected

Added in API level 21
public void onListenerConnected ()

Implement this method to learn about when the listener is enabled and connected to the notification manager. You are safe to call getActiveNotifications() at this time.
This method must be called on the thread that originally created this UI element. This is typically the main thread of your app.

onListenerDisconnected

Added in API level 24
public void onListenerDisconnected ()

Implement this method to learn about when the listener is disconnected from the notification manager.You will not receive any events after this call, and may only call requestRebind(android.content.ComponentName) at this time.
This method must be called on the thread that originally created this UI element. This is typically the main thread of your app.

onListenerHintsChanged

Added in API level 21
public void onListenerHintsChanged (int hints)

Implement this method to be notified when the Listener hints change.
This method must be called on the thread that originally created this UI element. This is typically the main thread of your app.

Parameters
hints int: The current listener hints.

onNotificationChannelGroupModified

Added in API level 26
public void onNotificationChannelGroupModified (String pkg, 
                UserHandle user, 
                NotificationChannelGroup group, 
                int modificationType)

Implement this method to learn about notification channel group modifications.

The caller must have device in order to receive this callback.
This method must be called on the thread that originally created this UI element. This is typically the main thread of your app.

Parameters
pkg String: The package the group belongs to.

user UserHandle: The user on which the change was made.

group NotificationChannelGroup: The group that has changed.

modificationType int: One of NOTIFICATION_CHANNEL_OR_GROUP_ADDED, NOTIFICATION_CHANNEL_OR_GROUP_UPDATED, NOTIFICATION_CHANNEL_OR_GROUP_DELETED. Value is NOTIFICATION_CHANNEL_OR_GROUP_ADDED, NOTIFICATION_CHANNEL_OR_GROUP_UPDATED, or NOTIFICATION_CHANNEL_OR_GROUP_DELETED

onNotificationChannelModified

Added in API level 26
public void onNotificationChannelModified (String pkg, 
                UserHandle user, 
                NotificationChannel channel, 
                int modificationType)

Implement this method to learn about notification channel modifications.

The caller must have device in order to receive this callback.
This method must be called on the thread that originally created this UI element. This is typically the main thread of your app.

Parameters
pkg String: The package the channel belongs to.

user UserHandle: The user on which the change was made.

channel NotificationChannel: The channel that has changed.

modificationType int: One of NOTIFICATION_CHANNEL_OR_GROUP_ADDED, NOTIFICATION_CHANNEL_OR_GROUP_UPDATED, NOTIFICATION_CHANNEL_OR_GROUP_DELETED. Value is NOTIFICATION_CHANNEL_OR_GROUP_ADDED, NOTIFICATION_CHANNEL_OR_GROUP_UPDATED, or NOTIFICATION_CHANNEL_OR_GROUP_DELETED

onNotificationPosted

Added in API level 21
public void onNotificationPosted (StatusBarNotification sbn, 
                NotificationListenerService.RankingMap rankingMap)

Implement this method to learn about new notifications as they are posted by apps.
This method must be called on the thread that originally created this UI element. This is typically the main thread of your app.

Parameters
sbn StatusBarNotification: A data structure encapsulating the original Notification object as well as its identifying information (tag and id) and source (package name).

rankingMap NotificationListenerService.RankingMap: The current ranking map that can be used to retrieve ranking information for active notifications, including the newly posted one.

onNotificationPosted

Added in API level 18
public void onNotificationPosted (StatusBarNotification sbn)

Implement this method to learn about new notifications as they are posted by apps.
This method must be called on the thread that originally created this UI element. This is typically the main thread of your app.

Parameters
sbn StatusBarNotification: A data structure encapsulating the original Notification object as well as its identifying information (tag and id) and source (package name).

onNotificationRankingUpdate

Added in API level 21
public void onNotificationRankingUpdate (NotificationListenerService.RankingMap rankingMap)

Implement this method to be notified when the notification ranking changes.
This method must be called on the thread that originally created this UI element. This is typically the main thread of your app.

Parameters
rankingMap NotificationListenerService.RankingMap: The current ranking map that can be used to retrieve ranking information for active notifications.

onNotificationRemoved

Added in API level 18
public void onNotificationRemoved (StatusBarNotification sbn)

Implement this method to learn when notifications are removed.

NOTE: The StatusBarNotification object you receive will be "light"; that is, the result from StatusBarNotification.getNotification may be missing some heavyweight fields such as Notification.contentView and Notification.largeIcon. However, all other fields on StatusBarNotification, sufficient to match this call with a prior call to onNotificationPosted(android.service.notification.StatusBarNotification), will be intact.
This method must be called on the thread that originally created this UI element. This is typically the main thread of your app.

Parameters
sbn StatusBarNotification: A data structure encapsulating at least the original information (tag and id) and source (package name) used to post the Notification that was just removed.

onNotificationRemoved

Added in API level 21
public void onNotificationRemoved (StatusBarNotification sbn, 
                NotificationListenerService.RankingMap rankingMap)

Implement this method to learn when notifications are removed.

NOTE: The StatusBarNotification object you receive will be "light"; that is, the result from StatusBarNotification.getNotification may be missing some heavyweight fields such as Notification.contentView and Notification.largeIcon. However, all other fields on StatusBarNotification, sufficient to match this call with a prior call to onNotificationPosted(android.service.notification.StatusBarNotification), will be intact.
This method must be called on the thread that originally created this UI element. This is typically the main thread of your app.

Parameters
sbn StatusBarNotification: A data structure encapsulating at least the original information (tag and id) and source (package name) used to post the Notification that was just removed.

rankingMap NotificationListenerService.RankingMap: The current ranking map that can be used to retrieve ranking information for active notifications.

onNotificationRemoved

Added in API level 26
public void onNotificationRemoved (StatusBarNotification sbn, 
                NotificationListenerService.RankingMap rankingMap, 
                int reason)

Implement this method to learn when notifications are removed and why.

NOTE: The StatusBarNotification object you receive will be "light"; that is, the result from StatusBarNotification.getNotification may be missing some heavyweight fields such as Notification.contentView and Notification.largeIcon. However, all other fields on StatusBarNotification, sufficient to match this call with a prior call to onNotificationPosted(android.service.notification.StatusBarNotification), will be intact.
This method must be called on the thread that originally created this UI element. This is typically the main thread of your app.

Parameters
sbn StatusBarNotification: A data structure encapsulating at least the original information (tag and id) and source (package name) used to post the Notification that was just removed.

rankingMap NotificationListenerService.RankingMap: The current ranking map that can be used to retrieve ranking information for active notifications.

reason int: Value is REASON_CLICK, REASON_CANCEL, REASON_CANCEL_ALL, REASON_ERROR, REASON_PACKAGE_CHANGED, REASON_USER_STOPPED, REASON_PACKAGE_BANNED, REASON_APP_CANCEL, REASON_APP_CANCEL_ALL, REASON_LISTENER_CANCEL, REASON_LISTENER_CANCEL_ALL, REASON_GROUP_SUMMARY_CANCELED, REASON_GROUP_OPTIMIZATION, REASON_PACKAGE_SUSPENDED, REASON_PROFILE_TURNED_OFF, REASON_UNAUTOBUNDLED, REASON_CHANNEL_BANNED, REASON_SNOOZED, REASON_TIMEOUT, REASON_CHANNEL_REMOVED, REASON_CLEAR_DATA, REASON_ASSISTANT_CANCEL, or REASON_LOCKDOWN

onSilentStatusBarIconsVisibilityChanged

Added in API level 29
public void onSilentStatusBarIconsVisibilityChanged (boolean hideSilentStatusIcons)

Implement this method to be notified when the behavior of silent notifications in the status bar changes. See NotificationManager.shouldHideSilentStatusBarIcons().
This method must be called on the thread that originally created this UI element. This is typically the main thread of your app.

Parameters
hideSilentStatusIcons boolean: whether or not status bar icons should be hidden for silent notifications

requestInterruptionFilter

Added in API level 21
public final void requestInterruptionFilter (int interruptionFilter)

Sets the desired interruption filter.

This is merely a request, the host may or may not choose to apply the requested interruption filter depending on other listener requests or other global state.

Listen for updates using onInterruptionFilterChanged(int).

Apps targeting Build.VERSION_CODES.VANILLA_ICE_CREAM and above (with some exceptions, such as companion device managers) cannot modify the global interruption filter. Calling this method will instead activate or deactivate an AutomaticZenRule associated to the app.

The service should wait for the onListenerConnected() event before performing this operation.

Parameters
interruptionFilter int: One of the INTERRUPTION_FILTER_ constants.

requestListenerHints

Added in API level 21
public final void requestListenerHints (int hints)

Sets the desired listener hints.

This is merely a request, the host may or may not choose to take action depending on other listener requests or other global state.

Listen for updates using onListenerHintsChanged(int).

The service should wait for the onListenerConnected() event before performing this operation.

Parameters
hints int: One or more of the HINT_ constants.

requestRebind

Added in API level 24
public static void requestRebind (ComponentName componentName)

Request that the listener be rebound, after a previous call to requestUnbind().

This method will fail for listeners that have not been granted the permission by the user.

Parameters
componentName ComponentName

requestUnbind

Added in API level 34
public static void requestUnbind (ComponentName componentName)

Request that the service be unbound.

This method will fail for components that are not part of the calling app.

Parameters
componentName ComponentName: This value cannot be null.

requestUnbind

Added in API level 24
public final void requestUnbind ()

Request that the service be unbound.

Once this is called, you will no longer receive updates and no method calls are guaranteed to be successful, until you next receive the onListenerConnected() event. The service will likely be killed by the system after this call.

The service should wait for the onListenerConnected() event before performing this operation. I know it's tempting, but you must wait.

setNotificationsShown

Added in API level 23
public final void setNotificationsShown (String[] keys)

Inform the notification manager that these notifications have been viewed by the user. This should only be called when there is sufficient confidence that the user is looking at the notifications, such as when the notifications appear on the screen due to an explicit user interaction.

The service should wait for the onListenerConnected() event before performing this operation.

Parameters
keys String: Notifications to mark as seen.

snoozeNotification

Added in API level 26
public final void snoozeNotification (String key, 
                long durationMs)

Inform the notification manager about snoozing a specific notification.

Use this if your listener has a user interface that allows the user to snooze a notification for a time. It should be called after the user snoozes a single notification using your UI; upon being informed, the notification manager will actually remove the notification and you will get an onNotificationRemoved(android.service.notification.StatusBarNotification) callback. When the snoozing period expires, you will get a onNotificationPosted(android.service.notification.StatusBarNotification, android.service.notification.NotificationListenerService.RankingMap) callback for the notification.

Parameters
key String: The key of the notification to snooze

durationMs long: A duration to snooze the notification for, in milliseconds.

updateNotificationChannel

Added in API level 26
public final void updateNotificationChannel (String pkg, 
                UserHandle user, 
                NotificationChannel channel)

Updates a notification channel for a given package for a given user. This should only be used to reflect changes a user has made to the channel via the listener's user interface.

This method will throw a security exception if you don't have access to notifications for the given user.

The caller must have device or be the notification assistant in order to use this method.

Parameters
pkg String: The package the channel belongs to. This value cannot be null.

user UserHandle: The user the channel belongs to. This value cannot be null.

channel NotificationChannel: the channel to update. This value cannot be null.

Protected methods

attachBaseContext

Added in API level 18
protected void attachBaseContext (Context base)

Set the base context for this ContextWrapper. All calls will then be delegated to the base context. Throws IllegalStateException if a base context has already been set.

Parameters
base Context: The new base context for this wrapper.