# MediaSessionService

Artifact: [androidx.media3:media3-session](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/session/MediaSessionService.java+class:androidx.media3.session.MediaSessionService)

*** ** * ** ***


```
public abstract class MediaSessionService extends LifecycleService
```

<br />

|---|---|---|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) ||||||
| ↳ | [android.content.Context](https://developer.android.com/reference/android/content/Context.html) |||||
|   | ↳ | [android.content.ContextWrapper](https://developer.android.com/reference/android/content/ContextWrapper.html) ||||
|   |   | ↳ | [android.app.Service](https://developer.android.com/reference/android/app/Service.html) |||
|   |   |   | ↳ | [androidx.lifecycle.LifecycleService](https://developer.android.com/reference/androidx/lifecycle/LifecycleService) ||
|   |   |   |   | ↳ | [androidx.media3.session.MediaSessionService](https://developer.android.com/reference/androidx/media3/session/MediaSessionService) |

Known direct subclasses [MediaLibraryService](https://developer.android.com/reference/androidx/media3/session/MediaLibraryService)

|---|---|
| `https://developer.android.com/reference/androidx/media3/session/MediaLibraryService` | Superclass to be extended by services hosting `https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.MediaLibrarySession`. |

*** ** * ** ***

Superclass to be extended by services hosting `https://developer.android.com/reference/androidx/media3/session/MediaSession`.

It's highly recommended for an app to use this class if media playback should continue while in the background. The service allows other apps to know that your app supports `https://developer.android.com/reference/androidx/media3/session/MediaSession` even when your app isn't running. This way, a user voice command may be able to start your app to play media.

To extend this class, declare the intent filter in your `AndroidManifest.xml`:

```
<service
  android:name="NameOfYourService"
  android:foregroundServiceType="mediaPlayback"
  android:exported="true">
  <intent-filter>
    <action android:name="androidx.media3.session.MediaSessionService"/>
  </intent-filter>
</service>
```

You may also declare the action `android.media.browse.MediaBrowserService` for compatibility with `android.support.v4.media.MediaBrowserCompat`. This service can handle the case automatically.

It's recommended for an app to have a single service declared in the manifest. Otherwise, your app might be shown twice in the list of the controller apps, or another app might fail to pick the right service when it wants to start a playback on this app. If you want to provide multiple sessions, take a look at [Supporting Multiple Sessions](https://developer.android.com/reference/androidx/media3/session/MediaSessionService#MultipleSessions).

Topics covered here:

1. [Service Lifecycle](https://developer.android.com/reference/androidx/media3/session/MediaSessionService#ServiceLifecycle)
2. [Supporting Multiple Sessions](https://developer.android.com/reference/androidx/media3/session/MediaSessionService#MultipleSessions)
3. [Backward Interoperability](https://developer.android.com/reference/androidx/media3/session/MediaSessionService#BackwardCompatibility)

## Service Lifecycle

A media session service is a bound service and its [foreground service type](https://developer.android.com/guide/topics/manifest/service-element#foregroundservicetype) must include *mediaPlayback* . When a `https://developer.android.com/reference/androidx/media3/session/MediaController` is created for the service, the controller binds to the service. `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onGetSession(androidx.media3.session.MediaSession.ControllerInfo)` will be called from `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onBind(android.content.Intent)`.

After binding, the session's `https://developer.android.com/reference/androidx/media3/session/MediaSession.Callback#onConnectAsync(androidx.media3.session.MediaSession,androidx.media3.session.MediaSession.ControllerInfo)` will be called to accept or reject the connection request from the controller. If it's accepted, the controller will be available and keep the binding. If it's rejected, the controller will unbind.

`https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onUpdateNotification(androidx.media3.session.MediaSession,boolean)` will be called whenever a notification needs to be shown, updated or cancelled. The default implementation will display notifications using a default UI or using a `https://developer.android.com/reference/androidx/media3/session/MediaNotification.Provider` that's set with `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#setMediaNotificationProvider(androidx.media3.session.MediaNotification.Provider)`. In addition, when playback starts, the service will become a [foreground service](https://developer.android.com/guide/components/foreground-services). It's required to keep the playback after the controller is destroyed. The service will become a background service when all playbacks are stopped. Apps targeting `SDK_INT >= 28` must request the permission, `https://developer.android.com/reference/android/Manifest.permission.html#FOREGROUND_SERVICE`, in order to make the service foreground. You can control when to show or hide notifications by overriding `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onUpdateNotification(androidx.media3.session.MediaSession,boolean)`. In this case, you must also start or stop the service from the foreground, when playback starts or stops respectively.

The service will be destroyed when all sessions are `https://developer.android.com/reference/androidx/media3/session/MediaController#release()`, or no controller is binding to the service while the service is in the background.

## Supporting Multiple Sessions

Generally, multiple sessions aren't necessary for most media apps. One exception is if your app can play multiple media contents at the same time, but only for playback of video-only media or remote playback, since the [audio focus policy](https://developer.android.com/media/optimize/audio-focus) recommends not playing multiple audio contents at the same time. Also, keep in mind that multiple media sessions would make Android Auto and Bluetooth devices with a display to show your apps multiple times, because they list up media sessions, not media apps.

However, if you're capable of handling multiple playbacks and want to keep their sessions while the app is in the background, create multiple sessions and add them to this service with `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#addSession(androidx.media3.session.MediaSession)`.

Note that a `https://developer.android.com/reference/androidx/media3/session/MediaController` can be created with `https://developer.android.com/reference/androidx/media3/session/SessionToken` to connect to a session in this service. In that case, `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onGetSession(androidx.media3.session.MediaSession.ControllerInfo)` will be called to decide which session to handle the connection request. Pick the best session among the added sessions, or create a new session and return it from `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onGetSession(androidx.media3.session.MediaSession.ControllerInfo)`.

## Backward Interoperability

When a legacy controller (such as `
android.support.v4.media.session.MediaControllerCompat`) connects, it connects using the session token published by the underlying platform session rather than binding directly to `https://developer.android.com/reference/androidx/media3/session/MediaSessionService`.

When a legacy media browser (such as `android.support.v4.media.MediaBrowserCompat`) binds to the service using the `android.media.browse.MediaBrowserService` action, `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onGetSession(androidx.media3.session.MediaSession.ControllerInfo)` is called with a `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo` whose package name is `https://developer.android.com/reference/android/service/media/MediaBrowserService.html#SERVICE_INTERFACE`. Returning a `https://developer.android.com/reference/androidx/media3/session/MediaSession` allows the legacy browser to connect and control playback, but media browsing operations are not supported. If media browsing is required, extend `https://developer.android.com/reference/androidx/media3/session/MediaLibraryService` and return a `https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.MediaLibrarySession`.

## Summary

| ### Nested types |
|---|
| `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi public interface https://developer.android.com/reference/androidx/media3/session/MediaSessionService.Listener` Listener for `https://developer.android.com/reference/androidx/media3/session/MediaSessionService`. |
| `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi @https://developer.android.com/reference/java/lang/annotation/Documented.html @https://developer.android.com/reference/java/lang/annotation/Retention.html(value = https://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html#SOURCE) @https://developer.android.com/reference/java/lang/annotation/Target.html(value = https://developer.android.com/reference/java/lang/annotation/ElementType.html#TYPE_USE) @https://developer.android.com/reference/androidx/annotation/IntDef(value = ) public annotation https://developer.android.com/reference/androidx/media3/session/MediaSessionService.ShowNotificationForIdlePlayerMode` The behavior for showing notifications when the `https://developer.android.com/reference/androidx/media3/common/Player` is in `https://developer.android.com/reference/androidx/media3/common/Player#STATE_IDLE()`. |

| ### Constants |
|---|---|
| `static final https://developer.android.com/reference/java/lang/String.html` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/session/MediaSessionService#CONNECTION_HINT_KEY_CONTROLLER_INFO_TYPE() = "androidx.media3.session.hint.controller_info_type"` Key for `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#getConnectionHints()` to hint the type of a fallback controller. |
| `static final https://developer.android.com/reference/java/lang/String.html` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/session/MediaSessionService#CONNECTION_HINT_KEY_INTENT_EXTRAS() = "androidx.media3.session.hint.intent_extras"` Key for `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#getConnectionHints()` to hint the extras of the `https://developer.android.com/reference/android/content/Intent.html` of the event that created a fallback controller. |
| `static final https://developer.android.com/reference/java/lang/String.html` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/session/MediaSessionService#CONNECTION_HINT_KEY_SESSION_ID() = "androidx.media3.session.hint.session_id"` Key for `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#getConnectionHints()` to hint the session URI for which a session is requested. |
| `static final long` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/session/MediaSessionService#DEFAULT_FOREGROUND_SERVICE_TIMEOUT_MS() = 600000` The default timeout for a session to stay in a foreground service state after it paused, stopped, failed or ended. |
| `static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#SERVICE_INTERFACE() = "androidx.media3.session.MediaSessionService"` The action for `https://developer.android.com/reference/android/content/Intent.html` filter that must be declared by the service. |
| `static final int` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/session/MediaSessionService#SHOW_NOTIFICATION_FOR_IDLE_PLAYER_AFTER_STOP_OR_ERROR() = 3` Shows a notification when the `https://developer.android.com/reference/androidx/media3/common/Player` is in `https://developer.android.com/reference/androidx/media3/common/Player#STATE_IDLE()` due to `https://developer.android.com/reference/androidx/media3/common/Player#stop()` or an error, has media, and the notification wasn't explicitly dismissed. |
| `static final int` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/session/MediaSessionService#SHOW_NOTIFICATION_FOR_IDLE_PLAYER_ALWAYS() = 1` Always show a notification when the `https://developer.android.com/reference/androidx/media3/common/Player` is in `https://developer.android.com/reference/androidx/media3/common/Player#STATE_IDLE()`, has media, and the notification wasn't explicitly dismissed. |
| `static final int` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/session/MediaSessionService#SHOW_NOTIFICATION_FOR_IDLE_PLAYER_NEVER() = 2` Never show a notification when the `https://developer.android.com/reference/androidx/media3/common/Player` is in `https://developer.android.com/reference/androidx/media3/common/Player#STATE_IDLE()`. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#MediaSessionService()()` Creates a service. |

| ### Public methods |
|---|---|
| `final void` | `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#addSession(androidx.media3.session.MediaSession)(https://developer.android.com/reference/androidx/media3/session/MediaSession session)` Adds a `https://developer.android.com/reference/androidx/media3/session/MediaSession` to this service. |
| `final void` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/session/MediaSessionService#clearListener()()` Clears the `https://developer.android.com/reference/androidx/media3/session/MediaSessionService.Listener`. |
| `final https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/session/MediaSession>` | `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#getSessions()()` Returns the list of `https://developer.android.com/reference/androidx/media3/session/MediaSession` that you've added to this service via `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#addSession(androidx.media3.session.MediaSession)` or `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onGetSession(androidx.media3.session.MediaSession.ControllerInfo)`. |
| `final boolean` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/session/MediaSessionService#isPlaybackOngoing()()` Returns whether there is a session with ongoing user-engaged playback that is run in a foreground service. |
| `final boolean` | `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#isSessionAdded(androidx.media3.session.MediaSession)(https://developer.android.com/reference/androidx/media3/session/MediaSession session)` Returns whether `session` has been added to this service via `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#addSession(androidx.media3.session.MediaSession)` or `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onGetSession(androidx.media3.session.MediaSession.ControllerInfo)`. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/os/IBinder.html` | `@https://developer.android.com/reference/androidx/annotation/CallSuper https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onBind(android.content.Intent)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/content/Intent.html intent)` Called when a component is about to bind to the service. |
| `void` | `@https://developer.android.com/reference/androidx/annotation/CallSuper https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onCreate()()` Called when the service is created. |
| `void` | `@https://developer.android.com/reference/androidx/annotation/CallSuper https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onDestroy()()` Called when the service is no longer used and is being removed. |
| `abstract @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/session/MediaSession` | `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onGetSession(androidx.media3.session.MediaSession.ControllerInfo)(https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo controllerInfo)` Called when a `https://developer.android.com/reference/androidx/media3/session/MediaController` is created with this service's `https://developer.android.com/reference/androidx/media3/session/SessionToken`. |
| `int` | `@https://developer.android.com/reference/androidx/annotation/CallSuper https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onStartCommand(android.content.Intent,int,int)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/content/Intent.html intent, int flags, int startId)` Called when a component calls `https://developer.android.com/reference/android/content/Context.html#startService(android.content.Intent)`. |
| `void` | `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onTaskRemoved(android.content.Intent)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/content/Intent.html rootIntent)` This method can be overridden to customize the behavior of when the app is dismissed from the recent apps. |
| `void` | `[onUpdateNotification](https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onUpdateNotification(androidx.media3.session.MediaSession))(https://developer.android.com/reference/androidx/media3/session/MediaSession session)` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onUpdateNotification(androidx.media3.session.MediaSession,boolean)` instead. <br /> |
| `void` | `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onUpdateNotification(androidx.media3.session.MediaSession,boolean)( https://developer.android.com/reference/androidx/media3/session/MediaSession session, boolean startInForegroundRequired )` Called when a notification needs to be updated. |
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<@https://developer.android.com/reference/androidx/media3/common/util/NullableType https://developer.android.com/reference/java/lang/Void.html>` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onUpdateNotificationAsync(androidx.media3.session.MediaSession,boolean)( https://developer.android.com/reference/androidx/media3/session/MediaSession session, boolean startInForegroundRequired )` Called when a notification needs to be updated. |
| `final void` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/session/MediaSessionService#pauseAllPlayersAndStopSelf()()` Pauses the player of each session managed by the service, ensures the foreground service is stopped, and calls `https://developer.android.com/reference/android/app/Service.html#stopSelf()`. |
| `final void` | `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#removeSession(androidx.media3.session.MediaSession)(https://developer.android.com/reference/androidx/media3/session/MediaSession session)` Removes a `https://developer.android.com/reference/androidx/media3/session/MediaSession` from this service. |
| `final void` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/session/MediaSessionService#setForegroundServiceTimeoutMs(long)(long foregroundServiceTimeoutMs)` Sets the timeout for a session to stay in a foreground service state after it paused, stopped, failed or ended. |
| `final void` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/session/MediaSessionService#setListener(androidx.media3.session.MediaSessionService.Listener)(https://developer.android.com/reference/androidx/media3/session/MediaSessionService.Listener listener)` Sets the `https://developer.android.com/reference/androidx/media3/session/MediaSessionService.Listener`. |
| `final void` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/session/MediaSessionService#setShowNotificationForIdlePlayer(int)( @https://developer.android.com/reference/androidx/media3/session/MediaSessionService.ShowNotificationForIdlePlayerMode int showNotificationForIdlePlayerMode )` Sets whether and when a notification for a `https://developer.android.com/reference/androidx/media3/common/Player` in `https://developer.android.com/reference/androidx/media3/common/Player#STATE_IDLE()` should be shown. |
| `final void` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/session/MediaSessionService#triggerNotificationUpdate()()` Manually trigger a notification update. |

| ### Protected methods |
|---|---|
| `final void` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/session/MediaSessionService#setMediaNotificationProvider(androidx.media3.session.MediaNotification.Provider)( https://developer.android.com/reference/androidx/media3/session/MediaNotification.Provider mediaNotificationProvider )` Sets the `https://developer.android.com/reference/androidx/media3/session/MediaNotification.Provider` to customize notifications. |

### Inherited Constants

From [android.content.ComponentCallbacks2](https://developer.android.com/reference/android/content/ComponentCallbacks2.html) `static final int` `https://developer.android.com/reference/android/content/ComponentCallbacks2.html#TRIM_MEMORY_BACKGROUND = 40` `static final int` `https://developer.android.com/reference/android/content/ComponentCallbacks2.html#TRIM_MEMORY_COMPLETE = 80`

**This field is deprecated.**
`static final int` `https://developer.android.com/reference/android/content/ComponentCallbacks2.html#TRIM_MEMORY_MODERATE = 60`

**This field is deprecated.**
`static final int` `https://developer.android.com/reference/android/content/ComponentCallbacks2.html#TRIM_MEMORY_RUNNING_CRITICAL = 15`

**This field is deprecated.**
`static final int` `https://developer.android.com/reference/android/content/ComponentCallbacks2.html#TRIM_MEMORY_RUNNING_LOW = 10`

**This field is deprecated.**
`static final int` `https://developer.android.com/reference/android/content/ComponentCallbacks2.html#TRIM_MEMORY_RUNNING_MODERATE = 5`

**This field is deprecated.**
`static final int` `https://developer.android.com/reference/android/content/ComponentCallbacks2.html#TRIM_MEMORY_UI_HIDDEN = 20` From [android.content.Context](https://developer.android.com/reference/android/content/Context.html) `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#ACCESSIBILITY_SERVICE = "accessibility"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#ACCOUNT_SERVICE = "account"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#ACTIVITY_SERVICE = "activity"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#ADVANCED_PROTECTION_SERVICE = "advanced_protection"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#ALARM_SERVICE = "alarm"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#APPWIDGET_SERVICE = "appwidget"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#APP_FUNCTION_SERVICE = "app_function"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#APP_OPS_SERVICE = "appops"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#APP_SEARCH_SERVICE = "app_search"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#AUDIO_SERVICE = "audio"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#AUTOFILL_SERVICE = "autofill"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#BATTERY_SERVICE = "batterymanager"` `static final int` `https://developer.android.com/reference/android/content/Context.html#BIND_ABOVE_CLIENT = 8` `static final int` `https://developer.android.com/reference/android/content/Context.html#BIND_ADJUST_WITH_ACTIVITY = 128` `static final int` `https://developer.android.com/reference/android/content/Context.html#BIND_ALLOW_ACTIVITY_STARTS = 512` `static final int` `https://developer.android.com/reference/android/content/Context.html#BIND_ALLOW_OOM_MANAGEMENT = 16` `static final int` `https://developer.android.com/reference/android/content/Context.html#BIND_AUTO_CREATE = 1` `static final int` `https://developer.android.com/reference/android/content/Context.html#BIND_DEBUG_UNBIND = 2` `static final int` `https://developer.android.com/reference/android/content/Context.html#BIND_EXTERNAL_SERVICE = -2147483648` `static final long` `https://developer.android.com/reference/android/content/Context.html#BIND_EXTERNAL_SERVICE_LONG = 4611686018427387904` `static final int` `https://developer.android.com/reference/android/content/Context.html#BIND_IMPORTANT = 64` `static final int` `https://developer.android.com/reference/android/content/Context.html#BIND_INCLUDE_CAPABILITIES = 4096` `static final int` `https://developer.android.com/reference/android/content/Context.html#BIND_NOT_FOREGROUND = 4` `static final int` `https://developer.android.com/reference/android/content/Context.html#BIND_NOT_PERCEPTIBLE = 256` `static final int` `https://developer.android.com/reference/android/content/Context.html#BIND_PACKAGE_ISOLATED_PROCESS = 16384` `static final int` `https://developer.android.com/reference/android/content/Context.html#BIND_SHARED_ISOLATED_PROCESS = 8192` `static final int` `https://developer.android.com/reference/android/content/Context.html#BIND_WAIVE_PRIORITY = 32` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#BIOMETRIC_SERVICE = "biometric"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#BLOB_STORE_SERVICE = "blob_store"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#BLUETOOTH_SERVICE = "bluetooth"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#BUGREPORT_SERVICE = "bugreport"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#CAMERA_SERVICE = "camera"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#CAPTIONING_SERVICE = "captioning"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#CARRIER_CONFIG_SERVICE = "carrier_config"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#CHOOSER_SERVICE = "chooser"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#CLIPBOARD_SERVICE = "clipboard"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#COMPANION_DEVICE_SERVICE = "companiondevice"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#CONNECTIVITY_DIAGNOSTICS_SERVICE = "connectivity_diagnostics"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#CONNECTIVITY_SERVICE = "connectivity"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#CONSUMER_IR_SERVICE = "consumer_ir"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#CONTACT_KEYS_SERVICE = "contact_keys"` `static final int` `https://developer.android.com/reference/android/content/Context.html#CONTEXT_IGNORE_SECURITY = 2` `static final int` `https://developer.android.com/reference/android/content/Context.html#CONTEXT_INCLUDE_CODE = 1` `static final int` `https://developer.android.com/reference/android/content/Context.html#CONTEXT_RESTRICTED = 4` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#CREDENTIAL_SERVICE = "credential"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#CROSS_PROFILE_APPS_SERVICE = "crossprofileapps"` `static final int` `https://developer.android.com/reference/android/content/Context.html#DEVICE_ID_DEFAULT = 0` `static final int` `https://developer.android.com/reference/android/content/Context.html#DEVICE_ID_INVALID = -1` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#DEVICE_LOCK_SERVICE = "device_lock"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#DEVICE_POLICY_SERVICE = "device_policy"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#DISPLAY_HASH_SERVICE = "display_hash"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#DISPLAY_SERVICE = "display"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#DOMAIN_VERIFICATION_SERVICE = "domain_verification"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#DOWNLOAD_SERVICE = "download"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#DROPBOX_SERVICE = "dropbox"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#EUICC_SERVICE = "euicc"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#FILE_INTEGRITY_SERVICE = "file_integrity"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#FILE_SERVICE = "file"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#GAME_SERVICE = "game"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#GRAMMATICAL_INFLECTION_SERVICE = "grammatical_inflection"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#HARDWARE_PROPERTIES_SERVICE = "hardware_properties"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#HEALTHCONNECT_SERVICE = "healthconnect"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#INPUT_METHOD_SERVICE = "input_method"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#INPUT_SERVICE = "input"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#IPSEC_SERVICE = "ipsec"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#JOB_SCHEDULER_SERVICE = "jobscheduler"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#KEYGUARD_SERVICE = "keyguard"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#KEYSTORE_SERVICE = "keystore"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#LAUNCHER_APPS_SERVICE = "launcherapps"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#LAYOUT_INFLATER_SERVICE = "layout_inflater"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#LOCALE_SERVICE = "locale"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#LOCATION_SERVICE = "location"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#MEDIA_COMMUNICATION_SERVICE = "media_communication"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#MEDIA_METRICS_SERVICE = "media_metrics"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#MEDIA_PROJECTION_SERVICE = "media_projection"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#MEDIA_QUALITY_SERVICE = "media_quality"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#MEDIA_ROUTER_SERVICE = "media_router"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#MEDIA_SESSION_SERVICE = "media_session"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#MIDI_SERVICE = "midi"` `static final int` `https://developer.android.com/reference/android/content/Context.html#MODE_APPEND = 32768` `static final int` `https://developer.android.com/reference/android/content/Context.html#MODE_ENABLE_WRITE_AHEAD_LOGGING = 8` `static final int` `https://developer.android.com/reference/android/content/Context.html#MODE_MULTI_PROCESS = 4`

**This field is deprecated.**
`static final int` `https://developer.android.com/reference/android/content/Context.html#MODE_NO_LOCALIZED_COLLATORS = 16` `static final int` `https://developer.android.com/reference/android/content/Context.html#MODE_PRIVATE = 0` `static final int` `https://developer.android.com/reference/android/content/Context.html#MODE_WORLD_READABLE = 1`

**This field is deprecated.**
`static final int` `https://developer.android.com/reference/android/content/Context.html#MODE_WORLD_WRITEABLE = 2`

**This field is deprecated.**
`static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#NETWORK_STATS_SERVICE = "netstats"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#NFC_SERVICE = "nfc"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#NOTIFICATION_SERVICE = "notification"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#NPU_SERVICE = "npu"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#NSD_SERVICE = "servicediscovery"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#OVERLAY_SERVICE = "overlay"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#PCC_SANDBOX_SERVICE = "pcc_sandbox"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#PEOPLE_SERVICE = "people"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#PERFORMANCE_HINT_SERVICE = "performance_hint"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#PERSISTENT_DATA_BLOCK_SERVICE = "persistent_data_block"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#POWER_SERVICE = "power"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#PRINT_SERVICE = "print"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#PROFILING_SERVICE = "profiling"` `static final int` `https://developer.android.com/reference/android/content/Context.html#RECEIVER_EXPORTED = 2` `static final int` `https://developer.android.com/reference/android/content/Context.html#RECEIVER_NOT_EXPORTED = 4` `static final int` `https://developer.android.com/reference/android/content/Context.html#RECEIVER_VISIBLE_TO_INSTANT_APPS = 1` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#RESTRICTIONS_SERVICE = "restrictions"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#ROLE_SERVICE = "role"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#SATELLITE_SERVICE = "satellite"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#SEARCH_SERVICE = "search"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#SECURITY_STATE_SERVICE = "security_state"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#SENSOR_SERVICE = "sensor"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#SERIAL_SERVICE = "serial"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#SHORTCUT_SERVICE = "shortcut"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#STATUS_BAR_SERVICE = "statusbar"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#STORAGE_SERVICE = "storage"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#STORAGE_STATS_SERVICE = "storagestats"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#SYSTEM_HEALTH_SERVICE = "systemhealth"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#TELECOM_SERVICE = "telecom"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#TELEPHONY_IMS_SERVICE = "telephony_ims"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#TELEPHONY_PHONE_NUMBER_SERVICE = "telephony_phone_number"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#TELEPHONY_SERVICE = "phone"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#TELEPHONY_SUBSCRIPTION_SERVICE = "telephony_subscription_service"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#TETHERING_SERVICE = "tethering"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#TEXT_CLASSIFICATION_SERVICE = "textclassification"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#TEXT_SERVICES_MANAGER_SERVICE = "textservices"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#TV_AD_SERVICE = "tv_ad"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#TV_INPUT_SERVICE = "tv_input"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#TV_INTERACTIVE_APP_SERVICE = "tv_interactive_app"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#UI_MODE_SERVICE = "uimode"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#USAGE_STATS_SERVICE = "usagestats"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#USB_SERVICE = "usb"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#USER_SERVICE = "user"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#VIBRATOR_MANAGER_SERVICE = "vibrator_manager"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#VIBRATOR_SERVICE = "vibrator"`

**This field is deprecated.**
`static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#VIRTUAL_DEVICE_SERVICE = "virtualdevice"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#VPN_MANAGEMENT_SERVICE = "vpn_management"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#WALLPAPER_SERVICE = "wallpaper"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#WEB_APP_SERVICE = "web_app"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#WIFI_AWARE_SERVICE = "wifiaware"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#WIFI_P2P_SERVICE = "wifip2p"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#WIFI_RTT_RANGING_SERVICE = "wifirtt"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#WIFI_SERVICE = "wifi"` `static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#WINDOW_SERVICE = "window"` From [android.app.Service](https://developer.android.com/reference/android/app/Service.html) `static final int` `https://developer.android.com/reference/android/app/Service.html#START_CONTINUATION_MASK = 15` `static final int` `https://developer.android.com/reference/android/app/Service.html#START_FLAG_REDELIVERY = 1` `static final int` `https://developer.android.com/reference/android/app/Service.html#START_FLAG_RETRY = 2` `static final int` `https://developer.android.com/reference/android/app/Service.html#START_NOT_STICKY = 2` `static final int` `https://developer.android.com/reference/android/app/Service.html#START_REDELIVER_INTENT = 3` `static final int` `https://developer.android.com/reference/android/app/Service.html#START_STICKY = 1` `static final int` `https://developer.android.com/reference/android/app/Service.html#START_STICKY_COMPATIBILITY = 0` `static final int` `https://developer.android.com/reference/android/app/Service.html#STOP_FOREGROUND_DETACH = 2` `static final int` `https://developer.android.com/reference/android/app/Service.html#STOP_FOREGROUND_LEGACY = 0`

**This field is deprecated.**
`static final int` `https://developer.android.com/reference/android/app/Service.html#STOP_FOREGROUND_REMOVE = 1`

### Inherited methods

From [android.content.Context](https://developer.android.com/reference/android/content/Context.html) `final int` `https://developer.android.com/reference/android/content/Context.html#getColor(int)(int id)` `final https://developer.android.com/reference/android/content/res/ColorStateList.html` `https://developer.android.com/reference/android/content/Context.html#getColorStateList(int)(int id)` `final https://developer.android.com/reference/android/graphics/drawable/Drawable.html` `https://developer.android.com/reference/android/content/Context.html#getDrawable(int)(int id)` `final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/Context.html#getString(int)(int resId)` `final T` `<T> https://developer.android.com/reference/android/content/Context.html#getSystemService(java.lang.Class&lt;T&gt;)(https://developer.android.com/reference/java/lang/Class.html<T> serviceClass)` `final https://developer.android.com/reference/java/lang/CharSequence.html` `https://developer.android.com/reference/android/content/Context.html#getText(int)(int resId)` `https://developer.android.com/reference/android/content/Context.BindServiceFlags.html` `https://developer.android.com/reference/android/content/Context.html#getUpdateableFlags()()` `final https://developer.android.com/reference/android/content/res/TypedArray.html` `https://developer.android.com/reference/android/content/Context.html#obtainStyledAttributes(android.util.AttributeSet, int[])(https://developer.android.com/reference/android/util/AttributeSet.html set, int[] attrs)` `void` `https://developer.android.com/reference/android/content/Context.html#revokeSelfPermissionOnKill(java.lang.String)(https://developer.android.com/reference/java/lang/String.html permName)` `void` `https://developer.android.com/reference/android/content/Context.html#sendBroadcastWithMultiplePermissions(android.content.Intent, java.lang.String[])(
https://developer.android.com/reference/android/content/Intent.html intent,
String[] receiverPermissions
)` From [android.content.ContextWrapper](https://developer.android.com/reference/android/content/ContextWrapper.html) `boolean` `https://developer.android.com/reference/android/content/ContextWrapper.html#bindIsolatedService(android.content.Intent, int, java.lang.String, java.util.concurrent.Executor, android.content.ServiceConnection)(
https://developer.android.com/reference/android/content/Intent.html service,
int flags,
https://developer.android.com/reference/java/lang/String.html instanceName,
https://developer.android.com/reference/java/util/concurrent/Executor.html executor,
https://developer.android.com/reference/android/content/ServiceConnection.html conn
)` `boolean` `https://developer.android.com/reference/android/content/ContextWrapper.html#bindService(android.content.Intent, android.content.Context.BindServiceFlags, java.util.concurrent.Executor, android.content.ServiceConnection)(
https://developer.android.com/reference/android/content/Intent.html service,
https://developer.android.com/reference/android/content/Context.BindServiceFlags.html flags,
https://developer.android.com/reference/java/util/concurrent/Executor.html executor,
https://developer.android.com/reference/android/content/ServiceConnection.html conn
)` `boolean` `https://developer.android.com/reference/android/content/ContextWrapper.html#bindServiceAsUser(android.content.Intent, android.content.ServiceConnection, android.content.Context.BindServiceFlags, android.os.UserHandle)(
https://developer.android.com/reference/android/content/Intent.html service,
https://developer.android.com/reference/android/content/ServiceConnection.html conn,
https://developer.android.com/reference/android/content/Context.BindServiceFlags.html flags,
https://developer.android.com/reference/android/os/UserHandle.html user
)` `int` `https://developer.android.com/reference/android/content/ContextWrapper.html#checkCallingOrSelfPermission(java.lang.String)(https://developer.android.com/reference/java/lang/String.html permission)` `int` `https://developer.android.com/reference/android/content/ContextWrapper.html#checkCallingOrSelfUriPermission(android.net.Uri, int)(https://developer.android.com/reference/android/net/Uri.html uri, int modeFlags)` `int[]` `https://developer.android.com/reference/android/content/ContextWrapper.html#checkCallingOrSelfUriPermissions(java.util.List&lt;android.net.Uri&gt;, int)(https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/android/net/Uri.html> uris, int modeFlags)` `int` `https://developer.android.com/reference/android/content/ContextWrapper.html#checkCallingPermission(java.lang.String)(https://developer.android.com/reference/java/lang/String.html permission)` `int` `https://developer.android.com/reference/android/content/ContextWrapper.html#checkCallingUriPermission(android.net.Uri, int)(https://developer.android.com/reference/android/net/Uri.html uri, int modeFlags)` `int[]` `https://developer.android.com/reference/android/content/ContextWrapper.html#checkCallingUriPermissions(java.util.List&lt;android.net.Uri&gt;, int)(https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/android/net/Uri.html> uris, int modeFlags)` `int` `https://developer.android.com/reference/android/content/ContextWrapper.html#checkContentUriPermissionFull(android.net.Uri, int, int, int)(https://developer.android.com/reference/android/net/Uri.html uri, int pid, int uid, int modeFlags)` `int` `https://developer.android.com/reference/android/content/ContextWrapper.html#checkPermission(java.lang.String, int, int)(https://developer.android.com/reference/java/lang/String.html permission, int pid, int uid)` `int` `https://developer.android.com/reference/android/content/ContextWrapper.html#checkSelfPermission(java.lang.String)(https://developer.android.com/reference/java/lang/String.html permission)` `int` `https://developer.android.com/reference/android/content/ContextWrapper.html#checkUriPermission(android.net.Uri, int, int, int)(https://developer.android.com/reference/android/net/Uri.html uri, int pid, int uid, int modeFlags)` `int[]` `https://developer.android.com/reference/android/content/ContextWrapper.html#checkUriPermissions(java.util.List&lt;android.net.Uri&gt;, int, int, int)(https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/android/net/Uri.html> uris, int pid, int uid, int modeFlags)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#clearWallpaper()()`

**This method is deprecated.**
`https://developer.android.com/reference/android/content/Context.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#createAttributionContext(java.lang.String)(https://developer.android.com/reference/java/lang/String.html attributionTag)` `https://developer.android.com/reference/android/content/Context.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#createConfigurationContext(android.content.res.Configuration)(https://developer.android.com/reference/android/content/res/Configuration.html overrideConfiguration)` `https://developer.android.com/reference/android/content/Context.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#createContext(android.content.ContextParams)(https://developer.android.com/reference/android/content/ContextParams.html contextParams)` `https://developer.android.com/reference/android/content/Context.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#createContextForSplit(java.lang.String)(https://developer.android.com/reference/java/lang/String.html splitName)` `https://developer.android.com/reference/android/content/Context.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#createDeviceContext(int)(int deviceId)` `https://developer.android.com/reference/android/content/Context.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#createDeviceProtectedStorageContext()()` `https://developer.android.com/reference/android/content/Context.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#createDisplayContext(android.view.Display)(https://developer.android.com/reference/android/view/Display.html display)` `https://developer.android.com/reference/android/content/Context.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#createPackageContext(java.lang.String, int)(https://developer.android.com/reference/java/lang/String.html packageName, int flags)` `https://developer.android.com/reference/android/content/Context.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#createWindowContext(android.view.Display, int, android.os.Bundle)(https://developer.android.com/reference/android/view/Display.html display, int type, https://developer.android.com/reference/android/os/Bundle.html options)` `String[]` `https://developer.android.com/reference/android/content/ContextWrapper.html#databaseList()()` `boolean` `https://developer.android.com/reference/android/content/ContextWrapper.html#deleteDatabase(java.lang.String)(https://developer.android.com/reference/java/lang/String.html name)` `boolean` `https://developer.android.com/reference/android/content/ContextWrapper.html#deleteFile(java.lang.String)(https://developer.android.com/reference/java/lang/String.html name)` `boolean` `https://developer.android.com/reference/android/content/ContextWrapper.html#deleteSharedPreferences(java.lang.String)(https://developer.android.com/reference/java/lang/String.html name)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#enforceCallingOrSelfPermission(java.lang.String, java.lang.String)(https://developer.android.com/reference/java/lang/String.html permission, https://developer.android.com/reference/java/lang/String.html message)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#enforceCallingOrSelfUriPermission(android.net.Uri, int, java.lang.String)(
https://developer.android.com/reference/android/net/Uri.html uri,
int modeFlags,
https://developer.android.com/reference/java/lang/String.html message
)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#enforceCallingPermission(java.lang.String, java.lang.String)(https://developer.android.com/reference/java/lang/String.html permission, https://developer.android.com/reference/java/lang/String.html message)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#enforceCallingUriPermission(android.net.Uri, int, java.lang.String)(https://developer.android.com/reference/android/net/Uri.html uri, int modeFlags, https://developer.android.com/reference/java/lang/String.html message)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#enforcePermission(java.lang.String, int, int, java.lang.String)(https://developer.android.com/reference/java/lang/String.html permission, int pid, int uid, https://developer.android.com/reference/java/lang/String.html message)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#enforceUriPermission(android.net.Uri, int, int, int, java.lang.String)(
https://developer.android.com/reference/android/net/Uri.html uri,
int pid,
int uid,
int modeFlags,
https://developer.android.com/reference/java/lang/String.html message
)` `String[]` `https://developer.android.com/reference/android/content/ContextWrapper.html#fileList()()` `https://developer.android.com/reference/android/content/Context.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getApplicationContext()()` `https://developer.android.com/reference/android/content/pm/ApplicationInfo.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getApplicationInfo()()` `https://developer.android.com/reference/android/content/res/AssetManager.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getAssets()()` `https://developer.android.com/reference/android/content/AttributionSource.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getAttributionSource()()` `https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getAttributionTag()()` `https://developer.android.com/reference/android/content/Context.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getBaseContext()()` `https://developer.android.com/reference/java/io/File.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getCacheDir()()` `https://developer.android.com/reference/java/lang/ClassLoader.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getClassLoader()()` `https://developer.android.com/reference/java/io/File.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getCodeCacheDir()()` `https://developer.android.com/reference/android/content/ContentResolver.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getContentResolver()()` `https://developer.android.com/reference/java/io/File.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getDataDir()()` `https://developer.android.com/reference/java/io/File.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getDatabasePath(java.lang.String)(https://developer.android.com/reference/java/lang/String.html name)` `int` `https://developer.android.com/reference/android/content/ContextWrapper.html#getDeviceId()()` `https://developer.android.com/reference/java/io/File.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getDir(java.lang.String, int)(https://developer.android.com/reference/java/lang/String.html name, int mode)` `https://developer.android.com/reference/android/view/Display.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getDisplay()()` `https://developer.android.com/reference/java/io/File.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getExternalCacheDir()()` `File[]` `https://developer.android.com/reference/android/content/ContextWrapper.html#getExternalCacheDirs()()` `https://developer.android.com/reference/java/io/File.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getExternalFilesDir(java.lang.String)(https://developer.android.com/reference/java/lang/String.html type)` `File[]` `https://developer.android.com/reference/android/content/ContextWrapper.html#getExternalFilesDirs(java.lang.String)(https://developer.android.com/reference/java/lang/String.html type)` `File[]` `https://developer.android.com/reference/android/content/ContextWrapper.html#getExternalMediaDirs()()`

**This method is deprecated.**
`https://developer.android.com/reference/java/io/File.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getFileStreamPath(java.lang.String)(https://developer.android.com/reference/java/lang/String.html name)` `https://developer.android.com/reference/java/io/File.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getFilesDir()()` `https://developer.android.com/reference/java/util/concurrent/Executor.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getMainExecutor()()` `https://developer.android.com/reference/android/os/Looper.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getMainLooper()()` `https://developer.android.com/reference/java/io/File.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getNoBackupFilesDir()()` `https://developer.android.com/reference/java/io/File.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getObbDir()()` `File[]` `https://developer.android.com/reference/android/content/ContextWrapper.html#getObbDirs()()` `https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getOpPackageName()()` `https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getPackageCodePath()()` `https://developer.android.com/reference/android/content/pm/PackageManager.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getPackageManager()()` `https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getPackageName()()` `https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getPackageResourcePath()()` `https://developer.android.com/reference/android/content/ContextParams.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getParams()()` `https://developer.android.com/reference/android/content/res/Resources.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getResources()()` `https://developer.android.com/reference/android/content/SharedPreferences.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getSharedPreferences(java.lang.String, int)(https://developer.android.com/reference/java/lang/String.html name, int mode)` `https://developer.android.com/reference/java/lang/Object.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getSystemService(java.lang.String)(https://developer.android.com/reference/java/lang/String.html name)` `https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getSystemServiceName(java.lang.Class&lt;?&gt;)(https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> serviceClass)` `https://developer.android.com/reference/android/content/res/Resources.Theme.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getTheme()()` `https://developer.android.com/reference/android/graphics/drawable/Drawable.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#getWallpaper()()`

**This method is deprecated.**
`int` `https://developer.android.com/reference/android/content/ContextWrapper.html#getWallpaperDesiredMinimumHeight()()`

**This method is deprecated.**
`int` `https://developer.android.com/reference/android/content/ContextWrapper.html#getWallpaperDesiredMinimumWidth()()`

**This method is deprecated.**
`void` `https://developer.android.com/reference/android/content/ContextWrapper.html#grantUriPermission(java.lang.String, android.net.Uri, int)(https://developer.android.com/reference/java/lang/String.html toPackage, https://developer.android.com/reference/android/net/Uri.html uri, int modeFlags)` `boolean` `https://developer.android.com/reference/android/content/ContextWrapper.html#isDeviceProtectedStorage()()` `boolean` `https://developer.android.com/reference/android/content/ContextWrapper.html#isRestricted()()` `boolean` `https://developer.android.com/reference/android/content/ContextWrapper.html#isUiContext()()` `boolean` `https://developer.android.com/reference/android/content/ContextWrapper.html#moveDatabaseFrom(android.content.Context, java.lang.String)(https://developer.android.com/reference/android/content/Context.html sourceContext, https://developer.android.com/reference/java/lang/String.html name)` `boolean` `https://developer.android.com/reference/android/content/ContextWrapper.html#moveSharedPreferencesFrom(android.content.Context, java.lang.String)(https://developer.android.com/reference/android/content/Context.html sourceContext, https://developer.android.com/reference/java/lang/String.html name)` `https://developer.android.com/reference/java/io/FileInputStream.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#openFileInput(java.lang.String)(https://developer.android.com/reference/java/lang/String.html name)` `https://developer.android.com/reference/java/io/FileOutputStream.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#openFileOutput(java.lang.String, int)(https://developer.android.com/reference/java/lang/String.html name, int mode)` `https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory)(
https://developer.android.com/reference/java/lang/String.html name,
int mode,
https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.CursorFactory.html factory
)` `https://developer.android.com/reference/android/graphics/drawable/Drawable.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#peekWallpaper()()`

**This method is deprecated.**
`void` `https://developer.android.com/reference/android/content/ContextWrapper.html#rebindService(android.content.ServiceConnection, android.content.Context.BindServiceFlags)(https://developer.android.com/reference/android/content/ServiceConnection.html conn, https://developer.android.com/reference/android/content/Context.BindServiceFlags.html flags)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#registerComponentCallbacks(android.content.ComponentCallbacks)(https://developer.android.com/reference/android/content/ComponentCallbacks.html callback)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#registerDeviceIdChangeListener(java.util.concurrent.Executor, java.util.function.IntConsumer)(https://developer.android.com/reference/java/util/concurrent/Executor.html executor, https://developer.android.com/reference/java/util/function/IntConsumer.html listener)` `https://developer.android.com/reference/android/content/Intent.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter)(https://developer.android.com/reference/android/content/BroadcastReceiver.html receiver, https://developer.android.com/reference/android/content/IntentFilter.html filter)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#removeStickyBroadcast(android.content.Intent)(https://developer.android.com/reference/android/content/Intent.html intent)`

**This method is deprecated.**
`void` `https://developer.android.com/reference/android/content/ContextWrapper.html#removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle)(https://developer.android.com/reference/android/content/Intent.html intent, https://developer.android.com/reference/android/os/UserHandle.html user)`

**This method is deprecated.**
`void` `https://developer.android.com/reference/android/content/ContextWrapper.html#revokeSelfPermissionsOnKill(java.util.Collection&lt;java.lang.String&gt;)(https://developer.android.com/reference/java/util/Collection.html<https://developer.android.com/reference/java/lang/String.html> permissions)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#revokeUriPermission(android.net.Uri, int)(https://developer.android.com/reference/android/net/Uri.html uri, int modeFlags)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#sendBroadcast(android.content.Intent)(https://developer.android.com/reference/android/content/Intent.html intent)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#sendBroadcastAsUser(android.content.Intent, android.os.UserHandle)(https://developer.android.com/reference/android/content/Intent.html intent, https://developer.android.com/reference/android/os/UserHandle.html user)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#sendOrderedBroadcast(android.content.Intent, int, java.lang.String, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, java.lang.String, android.os.Bundle, android.os.Bundle)(
https://developer.android.com/reference/android/content/Intent.html intent,
int initialCode,
https://developer.android.com/reference/java/lang/String.html receiverPermission,
https://developer.android.com/reference/java/lang/String.html receiverAppOp,
https://developer.android.com/reference/android/content/BroadcastReceiver.html resultReceiver,
https://developer.android.com/reference/android/os/Handler.html scheduler,
https://developer.android.com/reference/java/lang/String.html initialData,
https://developer.android.com/reference/android/os/Bundle.html initialExtras,
https://developer.android.com/reference/android/os/Bundle.html options
)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle)(
https://developer.android.com/reference/android/content/Intent.html intent,
https://developer.android.com/reference/android/os/UserHandle.html user,
https://developer.android.com/reference/java/lang/String.html receiverPermission,
https://developer.android.com/reference/android/content/BroadcastReceiver.html resultReceiver,
https://developer.android.com/reference/android/os/Handler.html scheduler,
int initialCode,
https://developer.android.com/reference/java/lang/String.html initialData,
https://developer.android.com/reference/android/os/Bundle.html initialExtras
)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#sendStickyBroadcast(android.content.Intent)(https://developer.android.com/reference/android/content/Intent.html intent)`

**This method is deprecated.**
`void` `https://developer.android.com/reference/android/content/ContextWrapper.html#sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle)(https://developer.android.com/reference/android/content/Intent.html intent, https://developer.android.com/reference/android/os/UserHandle.html user)`

**This method is deprecated.**
`void` `https://developer.android.com/reference/android/content/ContextWrapper.html#sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle)(
https://developer.android.com/reference/android/content/Intent.html intent,
https://developer.android.com/reference/android/content/BroadcastReceiver.html resultReceiver,
https://developer.android.com/reference/android/os/Handler.html scheduler,
int initialCode,
https://developer.android.com/reference/java/lang/String.html initialData,
https://developer.android.com/reference/android/os/Bundle.html initialExtras
)`

**This method is deprecated.**
`void` `https://developer.android.com/reference/android/content/ContextWrapper.html#sendStickyOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle)(
https://developer.android.com/reference/android/content/Intent.html intent,
https://developer.android.com/reference/android/os/UserHandle.html user,
https://developer.android.com/reference/android/content/BroadcastReceiver.html resultReceiver,
https://developer.android.com/reference/android/os/Handler.html scheduler,
int initialCode,
https://developer.android.com/reference/java/lang/String.html initialData,
https://developer.android.com/reference/android/os/Bundle.html initialExtras
)`

**This method is deprecated.**
`void` `https://developer.android.com/reference/android/content/ContextWrapper.html#setTheme(int)(int resid)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#setWallpaper(android.graphics.Bitmap)(https://developer.android.com/reference/android/graphics/Bitmap.html bitmap)`

**This method is deprecated.**
`void` `https://developer.android.com/reference/android/content/ContextWrapper.html#startActivities(android.content.Intent[])(Intent[] intents)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#startActivity(android.content.Intent)(https://developer.android.com/reference/android/content/Intent.html intent)` `https://developer.android.com/reference/android/content/ComponentName.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#startForegroundService(android.content.Intent)(https://developer.android.com/reference/android/content/Intent.html service)` `boolean` `https://developer.android.com/reference/android/content/ContextWrapper.html#startInstrumentation(android.content.ComponentName, java.lang.String, android.os.Bundle)(
https://developer.android.com/reference/android/content/ComponentName.html className,
https://developer.android.com/reference/java/lang/String.html profileFile,
https://developer.android.com/reference/android/os/Bundle.html arguments
)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int)(
https://developer.android.com/reference/android/content/IntentSender.html intent,
https://developer.android.com/reference/android/content/Intent.html fillInIntent,
int flagsMask,
int flagsValues,
int extraFlags
)` `https://developer.android.com/reference/android/content/ComponentName.html` `https://developer.android.com/reference/android/content/ContextWrapper.html#startService(android.content.Intent)(https://developer.android.com/reference/android/content/Intent.html service)` `boolean` `https://developer.android.com/reference/android/content/ContextWrapper.html#stopService(android.content.Intent)(https://developer.android.com/reference/android/content/Intent.html name)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#unbindService(android.content.ServiceConnection)(https://developer.android.com/reference/android/content/ServiceConnection.html conn)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#unregisterComponentCallbacks(android.content.ComponentCallbacks)(https://developer.android.com/reference/android/content/ComponentCallbacks.html callback)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#unregisterDeviceIdChangeListener(java.util.function.IntConsumer)(https://developer.android.com/reference/java/util/function/IntConsumer.html listener)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#unregisterReceiver(android.content.BroadcastReceiver)(https://developer.android.com/reference/android/content/BroadcastReceiver.html receiver)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#updateServiceBindings(java.util.Collection&lt;android.content.Context.UpdateBindingParams&gt;)(https://developer.android.com/reference/java/util/Collection.html<https://developer.android.com/reference/android/content/Context.UpdateBindingParams.html> params)` `void` `https://developer.android.com/reference/android/content/ContextWrapper.html#updateServiceGroup(android.content.ServiceConnection, int, int)(https://developer.android.com/reference/android/content/ServiceConnection.html conn, int group, int importance)` From [androidx.lifecycle.LifecycleOwner](https://developer.android.com/reference/androidx/lifecycle/LifecycleOwner) `abstract https://developer.android.com/reference/androidx/lifecycle/Lifecycle` `https://developer.android.com/reference/androidx/lifecycle/LifecycleOwner#getLifecycle()()`

The `https://developer.android.com/reference/androidx/lifecycle/Lifecycle` of this owner.
From [androidx.lifecycle.LifecycleService](https://developer.android.com/reference/androidx/lifecycle/LifecycleService) `https://developer.android.com/reference/androidx/lifecycle/Lifecycle` `https://developer.android.com/reference/androidx/lifecycle/LifecycleService#getLifecycle()()`

The `https://developer.android.com/reference/androidx/lifecycle/Lifecycle` of this owner.
`void` `https://developer.android.com/reference/androidx/lifecycle/LifecycleService#onStart(android.content.Intent,int)(https://developer.android.com/reference/android/content/Intent.html intent, int startId)`

**This method is deprecated.**
From [android.app.Service](https://developer.android.com/reference/android/app/Service.html) `void` `https://developer.android.com/reference/android/app/Service.html#attachBaseContext(android.content.Context)(https://developer.android.com/reference/android/content/Context.html newBase)` `void` `https://developer.android.com/reference/android/app/Service.html#dump(java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[])(https://developer.android.com/reference/java/io/FileDescriptor.html fd, https://developer.android.com/reference/java/io/PrintWriter.html writer, String[] args)` `final https://developer.android.com/reference/android/app/Application.html` `https://developer.android.com/reference/android/app/Service.html#getApplication()()` `final int` `https://developer.android.com/reference/android/app/Service.html#getForegroundServiceType()()` `abstract https://developer.android.com/reference/android/os/IBinder.html` `https://developer.android.com/reference/android/app/Service.html#onBind(android.content.Intent)(https://developer.android.com/reference/android/content/Intent.html p)` `void` `https://developer.android.com/reference/android/app/Service.html#onConfigurationChanged(android.content.res.Configuration)(https://developer.android.com/reference/android/content/res/Configuration.html newConfig)` `void` `https://developer.android.com/reference/android/app/Service.html#onCreate()()` `void` `https://developer.android.com/reference/android/app/Service.html#onDestroy()()` `void` `https://developer.android.com/reference/android/app/Service.html#onLowMemory()()`

**This method is deprecated.**
`void` `https://developer.android.com/reference/android/app/Service.html#onRebind(android.content.Intent)(https://developer.android.com/reference/android/content/Intent.html intent)` `void` `https://developer.android.com/reference/android/app/Service.html#onStart(android.content.Intent, int)(https://developer.android.com/reference/android/content/Intent.html intent, int startId)`

**This method is deprecated.**
`int` `https://developer.android.com/reference/android/app/Service.html#onStartCommand(android.content.Intent, int, int)(https://developer.android.com/reference/android/content/Intent.html intent, int flags, int startId)` `void` `https://developer.android.com/reference/android/app/Service.html#onTimeout(int)(int startId)` `void` `https://developer.android.com/reference/android/app/Service.html#onTrimMemory(int)(int level)` `boolean` `https://developer.android.com/reference/android/app/Service.html#onUnbind(android.content.Intent)(https://developer.android.com/reference/android/content/Intent.html intent)` `final void` `https://developer.android.com/reference/android/app/Service.html#startForeground(int, android.app.Notification)(int id, https://developer.android.com/reference/android/app/Notification.html notification)` `final void` `https://developer.android.com/reference/android/app/Service.html#stopForeground(boolean)(boolean removeNotification)`

**This method is deprecated.**
`final void` `https://developer.android.com/reference/android/app/Service.html#stopSelf()()` `final boolean` `https://developer.android.com/reference/android/app/Service.html#stopSelfResult(int)(int startId)`

## Constants

### CONNECTION_HINT_KEY_CONTROLLER_INFO_TYPE

```
@UnstableApi
public static final String CONNECTION_HINT_KEY_CONTROLLER_INFO_TYPE = "androidx.media3.session.hint.controller_info_type"
```

Key for `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#getConnectionHints()` to hint the type of a fallback controller.

A fallback controller is created when a media button event starts the service and a session is requested through `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onGetSession(androidx.media3.session.MediaSession.ControllerInfo)`.

### CONNECTION_HINT_KEY_INTENT_EXTRAS

```
@UnstableApi
public static final String CONNECTION_HINT_KEY_INTENT_EXTRAS = "androidx.media3.session.hint.intent_extras"
```

Key for `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#getConnectionHints()` to hint the extras of the `https://developer.android.com/reference/android/content/Intent.html` of the event that created a fallback controller.

A fallback controller is created when a media button event starts the service and a session is requested through `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onGetSession(androidx.media3.session.MediaSession.ControllerInfo)`.

### CONNECTION_HINT_KEY_SESSION_ID

```
@UnstableApi
public static final String CONNECTION_HINT_KEY_SESSION_ID = "androidx.media3.session.hint.session_id"
```

Key for `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#getConnectionHints()` to hint the session URI for which a session is requested. The session URI hint may be unset if no session URI was provided by the media button event.

A fallback controller is created when a media button event starts the service and a session is requested through `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onGetSession(androidx.media3.session.MediaSession.ControllerInfo)`.

### DEFAULT_FOREGROUND_SERVICE_TIMEOUT_MS

```
@UnstableApi
public static final long DEFAULT_FOREGROUND_SERVICE_TIMEOUT_MS = 600000
```

The default timeout for a session to stay in a foreground service state after it paused, stopped, failed or ended.

### SERVICE_INTERFACE

```
public static final String SERVICE_INTERFACE = "androidx.media3.session.MediaSessionService"
```

The action for `https://developer.android.com/reference/android/content/Intent.html` filter that must be declared by the service.

### SHOW_NOTIFICATION_FOR_IDLE_PLAYER_AFTER_STOP_OR_ERROR

```
@UnstableApi
public static final int SHOW_NOTIFICATION_FOR_IDLE_PLAYER_AFTER_STOP_OR_ERROR = 3
```

Shows a notification when the `https://developer.android.com/reference/androidx/media3/common/Player` is in `https://developer.android.com/reference/androidx/media3/common/Player#STATE_IDLE()` due to `https://developer.android.com/reference/androidx/media3/common/Player#stop()` or an error, has media, and the notification wasn't explicitly dismissed.

### SHOW_NOTIFICATION_FOR_IDLE_PLAYER_ALWAYS

```
@UnstableApi
public static final int SHOW_NOTIFICATION_FOR_IDLE_PLAYER_ALWAYS = 1
```

Always show a notification when the `https://developer.android.com/reference/androidx/media3/common/Player` is in `https://developer.android.com/reference/androidx/media3/common/Player#STATE_IDLE()`, has media, and the notification wasn't explicitly dismissed.

### SHOW_NOTIFICATION_FOR_IDLE_PLAYER_NEVER

```
@UnstableApi
public static final int SHOW_NOTIFICATION_FOR_IDLE_PLAYER_NEVER = 2
```

Never show a notification when the `https://developer.android.com/reference/androidx/media3/common/Player` is in `https://developer.android.com/reference/androidx/media3/common/Player#STATE_IDLE()`.

## Public constructors

### MediaSessionService

```
public MediaSessionService()
```

Creates a service.

## Public methods

### addSession

```
public final void addSession(MediaSession session)
```

Adds a `https://developer.android.com/reference/androidx/media3/session/MediaSession` to this service. This is not necessary for most media apps. See [Supporting Multiple Sessions](https://developer.android.com/reference/androidx/media3/session/MediaSessionService#MultipleSessions) for details.

The added session will be removed automatically `https://developer.android.com/reference/androidx/media3/session/MediaSession#release()`.

This method can be called from any thread.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/session/MediaSession session` | A session to be added. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#removeSession(androidx.media3.session.MediaSession)` |   |
| `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#getSessions()` |   |

### clearListener

```
@UnstableApi
public final void clearListener()
```

Clears the `https://developer.android.com/reference/androidx/media3/session/MediaSessionService.Listener`.

This method can be called from any thread.

### getSessions

```
public final List<MediaSession> getSessions()
```

Returns the list of `https://developer.android.com/reference/androidx/media3/session/MediaSession` that you've added to this service via `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#addSession(androidx.media3.session.MediaSession)` or `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onGetSession(androidx.media3.session.MediaSession.ControllerInfo)`.

This method can be called from any thread.

### isPlaybackOngoing

```
@UnstableApi
public final boolean isPlaybackOngoing()
```

Returns whether there is a session with ongoing user-engaged playback that is run in a foreground service.

It is only possible to terminate the service with `https://developer.android.com/reference/android/app/Service.html#stopSelf()` if this method returns `false`.

Note that sessions are kept in foreground and this method returns `true` for the `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#setForegroundServiceTimeoutMs(long)` after they paused, stopped, failed or ended. Use `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#pauseAllPlayersAndStopSelf()` to pause all ongoing playbacks immediately and terminate the service.

This method must be called on the main thread.

### isSessionAdded

```
public final boolean isSessionAdded(MediaSession session)
```

Returns whether `session` has been added to this service via `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#addSession(androidx.media3.session.MediaSession)` or `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onGetSession(androidx.media3.session.MediaSession.ControllerInfo)`.

This method can be called from any thread.

### onBind

```
@CallSuper
public @Nullable IBinder onBind(@Nullable Intent intent)
```

Called when a component is about to bind to the service.

The default implementation handles the incoming requests from `https://developer.android.com/reference/androidx/media3/session/MediaController`. In this case, the intent will have the action `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#SERVICE_INTERFACE()`. Override this method if this service also needs to handle actions other than `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#SERVICE_INTERFACE()`.

This method will be called on the main thread.

### onCreate

```
@CallSuper
public void onCreate()
```

Called when the service is created.

Override this method if you need your own initialization.

This method will be called on the main thread.

### onDestroy

```
@CallSuper
public void onDestroy()
```

Called when the service is no longer used and is being removed.

Override this method if you need your own clean up.

This method will be called on the main thread.

### onGetSession

```
public abstract @Nullable MediaSession onGetSession(MediaSession.ControllerInfo controllerInfo)
```

Called when a `https://developer.android.com/reference/androidx/media3/session/MediaController` is created with this service's `https://developer.android.com/reference/androidx/media3/session/SessionToken`. Return a `https://developer.android.com/reference/androidx/media3/session/MediaSession` that the controller will connect to, or `null` to reject the connection request.

Note: This method must not be called directly by app code.

The service automatically maintains the returned sessions. In other words, a session returned by this method will be added to the service, and removed from the service when the session is `https://developer.android.com/reference/androidx/media3/session/MediaSession#release()`. You don't need to manually call `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#addSession(androidx.media3.session.MediaSession)` nor `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#removeSession(androidx.media3.session.MediaSession)`.

There are two special cases where the `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#getPackageName()` returns a non-existent package name:

- When the service is started by a media button event. In such a case the `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#getConnectionHints()` are marked with a string bundle entry with key `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#CONNECTION_HINT_KEY_CONTROLLER_INFO_TYPE()` with value `https://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_BUTTON`. If the media button intent requests a specific session to be started the requested session ID can be looked up as a string entry with key `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#CONNECTION_HINT_KEY_SESSION_ID()` (optional). If you want to allow the service to be started by media button events, do not return `null`. Note that in such a case the `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo` is a placeholder only and does not represent an actual controller that is connected to the service.
- When a legacy `https://developer.android.com/reference/android/media/browse/MediaBrowser.html` or a `
  android.support.v4.media.MediaBrowserCompat` tries to connect, the package name will be `https://developer.android.com/reference/android/service/media/MediaBrowserService.html#SERVICE_INTERFACE`. If you want to allow the service to be bound by the legacy media browsers, do not return `null`. Note that returning a `https://developer.android.com/reference/androidx/media3/session/MediaSession` allows legacy browsers to control playback, but browsing operations are not supported unless the session is a `https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.MediaLibrarySession`.

For those special cases, the values returned by `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#getUid()` and `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#getConnectionHints()` have no meaning.

This method will be called on the main thread.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo controllerInfo` | The information of the controller that is trying to connect. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/session/MediaSession` | A `https://developer.android.com/reference/androidx/media3/session/MediaSession` for the controller, or `null` to reject the connection. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/media3/session/MediaSession.Builder` |   |
| `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#getSessions()` |   |

### onStartCommand

```
@CallSuper
public int onStartCommand(@Nullable Intent intent, int flags, int startId)
```

Called when a component calls `https://developer.android.com/reference/android/content/Context.html#startService(android.content.Intent)`.

The default implementation handles the incoming media button events. In this case, the intent will have the action `https://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_BUTTON`. Override this method if this service also needs to handle actions other than `https://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_BUTTON`.

This method will be called on the main thread.

### onTaskRemoved

```
public void onTaskRemoved(@Nullable Intent rootIntent)
```

This method can be overridden to customize the behavior of when the app is dismissed from the recent apps.

The default behavior is that if `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#isPlaybackOngoing()`, which means the service is already running in the foreground, and at least one media session `https://developer.android.com/reference/androidx/media3/common/Player#isPlaying()`, the service is kept running. Otherwise, playbacks are paused and the service is stopped by calling `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#pauseAllPlayersAndStopSelf()` which terminates the service lifecycle and triggers `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onDestroy()` that an app can override to release the sessions and other resources.

An app can safely override this method without calling super to implement a different behaviour, for instance unconditionally calling `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#pauseAllPlayersAndStopSelf()` to stop the service even when playing. However, if `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#isPlaybackOngoing()`, the service must be terminated otherwise the service will be crashed and restarted by the system.

Note: The service [can't be stopped](https://developer.android.com/develop/background-work/services/bound-services#Lifecycle) until all media controllers have been unbound. Hence, an app needs to release all internal controllers that have connected to the service (for instance from an activity in `Activity.onStop()`). If an app allows external apps to connect a `https://developer.android.com/reference/androidx/media3/session/MediaController` to the service, these controllers also need to be disconnected. In such a scenario of external bound clients, an app needs to override this method to release the session before calling `https://developer.android.com/reference/android/app/Service.html#stopSelf()`.

### onUpdateNotification

```
public void [onUpdateNotification](https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onUpdateNotification(androidx.media3.session.MediaSession))(MediaSession session)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onUpdateNotification(androidx.media3.session.MediaSession,boolean)` instead.

### onUpdateNotification

```
public void onUpdateNotification(
    MediaSession session,
    boolean startInForegroundRequired
)
```

Called when a notification needs to be updated. Override this method to show or cancel your own notifications.

This method is replaced by `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onUpdateNotificationAsync(androidx.media3.session.MediaSession,boolean)` to enable the default implementation of the library to provide multi thread scenarios. An app must not override both methods. While this method is still supported, we recommend migrating to the newer version and return an `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/Futures.html#immediateFuture(V)` if no real async execution is required for your app.

Note: This method must not be called directly by app code.

This method is called whenever the service has detected a change that requires to show, update or cancel a notification with a flag `startInForegroundRequired` suggested by the service whether starting in the foreground is required. The method will be called on the application thread of the app that the service belongs to.

Override this method to create your own notification and customize the foreground handling of your service.

The default implementation will present a default notification or the notification provided by the `https://developer.android.com/reference/androidx/media3/session/MediaNotification.Provider` that is `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#setMediaNotificationProvider(androidx.media3.session.MediaNotification.Provider)` by the app. Further, the service is started in the [foreground](https://developer.android.com/guide/components/foreground-services) when playback is ongoing and put back into background otherwise.

Apps targeting `SDK_INT >= 28` must request the permission, `https://developer.android.com/reference/android/Manifest.permission.html#FOREGROUND_SERVICE`.

This method will be called on the main thread.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/session/MediaSession session` | A session that needs notification update. |
| `boolean startInForegroundRequired` | Whether the service is required to start in the foreground. |

### onUpdateNotificationAsync

```
@UnstableApi
public ListenableFuture<@NullableType Void> onUpdateNotificationAsync(
    MediaSession session,
    boolean startInForegroundRequired
)
```

Called when a notification needs to be updated. Override this method to show or cancel your own notifications.

Note: This method must not be called directly by app code.

This method is called whenever the service has detected a change that requires to show, update or cancel a notification with a flag `startInForegroundRequired` suggested by the service whether starting in the foreground is required. The method will be called on the application thread of the app that the service belongs to.

Override this method to create your own notification and customize the foreground handling of your service.

The default implementation will present a default notification or the notification provided by the `https://developer.android.com/reference/androidx/media3/session/MediaNotification.Provider` that is `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#setMediaNotificationProvider(androidx.media3.session.MediaNotification.Provider)` by the app. Further, the service is started in the [foreground](https://developer.android.com/guide/components/foreground-services) when playback is ongoing and put back into background otherwise.

Apps targeting `SDK_INT >= 28` must request the permission, `https://developer.android.com/reference/android/Manifest.permission.html#FOREGROUND_SERVICE`.

This method will be called on the main thread.

This method is replacing `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onUpdateNotification(androidx.media3.session.MediaSession,boolean)` to enable the default implementation of the library to provide multi thread setup scenarios. An app must not override both methods.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/session/MediaSession session` | A session that needs notification update. |
| `boolean startInForegroundRequired` | Whether the service is required to start in the foreground. |

| Returns |
|---|---|
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<@https://developer.android.com/reference/androidx/media3/common/util/NullableType https://developer.android.com/reference/java/lang/Void.html>` | A future that completes when the notification has been updated. |

### pauseAllPlayersAndStopSelf

```
@UnstableApi
public final void pauseAllPlayersAndStopSelf()
```

Pauses the player of each session managed by the service, ensures the foreground service is stopped, and calls `https://developer.android.com/reference/android/app/Service.html#stopSelf()`.

This terminates the service lifecycle and triggers `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onDestroy()` that an app can override to release the sessions and other resources.

This method must be called on the main thread.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | if the `https://developer.android.com/reference/androidx/media3/common/Player#getApplicationLooper()` is not the looper of the main thread. In such a case, the service needs to be stopped manually. |

### removeSession

```
public final void removeSession(MediaSession session)
```

Removes a `https://developer.android.com/reference/androidx/media3/session/MediaSession` from this service. This is not necessary for most media apps. See [Supporting Multiple Sessions](https://developer.android.com/reference/androidx/media3/session/MediaSessionService#MultipleSessions) for details.

This method can be called from any thread.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/session/MediaSession session` | A session to be removed. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#addSession(androidx.media3.session.MediaSession)` |   |
| `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#getSessions()` |   |

### setForegroundServiceTimeoutMs

```
@UnstableApi
public final void setForegroundServiceTimeoutMs(long foregroundServiceTimeoutMs)
```

Sets the timeout for a session to stay in a foreground service state after it paused, stopped, failed or ended.

Can only be called once the `https://developer.android.com/reference/android/content/Context.html` of the service is initialized in `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#onCreate()`.

Has no effect on already running timeouts.

The default and maximum value is `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#DEFAULT_FOREGROUND_SERVICE_TIMEOUT_MS()`. If a larger value is provided, it will be clamped down to `https://developer.android.com/reference/androidx/media3/session/MediaSessionService#DEFAULT_FOREGROUND_SERVICE_TIMEOUT_MS()`.

This method must be called on the main thread.

| Parameters |
|---|---|
| `long foregroundServiceTimeoutMs` | The timeout in milliseconds. |

### setListener

```
@UnstableApi
public final void setListener(MediaSessionService.Listener listener)
```

Sets the `https://developer.android.com/reference/androidx/media3/session/MediaSessionService.Listener`.

This method can be called from any thread.

### setShowNotificationForIdlePlayer

```
@UnstableApi
public final void setShowNotificationForIdlePlayer(
    @MediaSessionService.ShowNotificationForIdlePlayerMode int showNotificationForIdlePlayerMode
)
```

Sets whether and when a notification for a `https://developer.android.com/reference/androidx/media3/common/Player` in `https://developer.android.com/reference/androidx/media3/common/Player#STATE_IDLE()` should be shown.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/media3/session/MediaSessionService.ShowNotificationForIdlePlayerMode int showNotificationForIdlePlayerMode` | The `https://developer.android.com/reference/androidx/media3/session/MediaSessionService.ShowNotificationForIdlePlayerMode`. |

### triggerNotificationUpdate

```
@UnstableApi
public final void triggerNotificationUpdate()
```

Manually trigger a notification update.

In most cases, this should not be required unless an external event that can't be detected by the session itself requires to update the notification.

## Protected methods

### setMediaNotificationProvider

```
@UnstableApi
protected final void setMediaNotificationProvider(
    MediaNotification.Provider mediaNotificationProvider
)
```

Sets the `https://developer.android.com/reference/androidx/media3/session/MediaNotification.Provider` to customize notifications.

This method can be called from any thread.