# DownloadService

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

*** ** * ** ***

<br />

```
@UnstableApi
public abstract class DownloadService extends Service
```

<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.media3.exoplayer.offline.DownloadService](https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService) |

*** ** * ** ***

A `https://developer.android.com/reference/android/app/Service.html` for downloading media.

Apps with target SDK 33 and greater need to add the ` android.permission.POST_NOTIFICATIONS` permission to the manifest and request the permission at runtime before starting downloads. Without that permission granted by the user, notifications posted by this service are not displayed. See [the official UI guide](https://developer.android.com/develop/ui/views/notifications/notification-permission) for more detailed information.

## Summary

| ### Constants |
|---|---|
| `static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_ADD_DOWNLOAD() = "androidx.media3.exoplayer.downloadService.action.ADD_DOWNLOAD"` Adds a new download. |
| `static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_INIT() = "androidx.media3.exoplayer.downloadService.action.INIT"` Starts a download service to resume any ongoing downloads. |
| `static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_PAUSE_DOWNLOADS() = "androidx.media3.exoplayer.downloadService.action.PAUSE_DOWNLOADS"` Pauses all downloads. |
| `static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_REMOVE_ALL_DOWNLOADS() = "androidx.media3.exoplayer.downloadService.action.REMOVE_ALL_DOWNLOADS"` Removes all downloads. |
| `static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_REMOVE_DOWNLOAD() = "androidx.media3.exoplayer.downloadService.action.REMOVE_DOWNLOAD"` Removes a download. |
| `static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_RESUME_DOWNLOADS() = "androidx.media3.exoplayer.downloadService.action.RESUME_DOWNLOADS"` Resumes all downloads except those that have a non-zero `https://developer.android.com/reference/androidx/media3/exoplayer/offline/Download#stopReason()`. |
| `static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_SET_REQUIREMENTS() = "androidx.media3.exoplayer.downloadService.action.SET_REQUIREMENTS"` Sets the requirements that need to be met for downloads to progress. |
| `static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_SET_STOP_REASON() = "androidx.media3.exoplayer.downloadService.action.SET_STOP_REASON"` Sets the stop reason for one or all downloads. |
| `static final long` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#DEFAULT_FOREGROUND_NOTIFICATION_UPDATE_INTERVAL() = 1000` Default foreground notification update interval in milliseconds. |
| `static final int` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#FOREGROUND_NOTIFICATION_ID_NONE() = 0` Invalid foreground notification id that can be used to run the service in the background. |
| `static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_CONTENT_ID() = "content_id"` Key for the `https://developer.android.com/reference/java/lang/String.html` content id in `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_SET_STOP_REASON()` and `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_REMOVE_DOWNLOAD()` intents. |
| `static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_DOWNLOAD_REQUEST() = "download_request"` Key for the `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadRequest` in `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_ADD_DOWNLOAD()` intents. |
| `static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND() = "foreground"` Key for a boolean extra that can be set on any intent to indicate whether the service was started in the foreground. |
| `static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_REQUIREMENTS() = "requirements"` Key for the `https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Requirements` in `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_SET_REQUIREMENTS()` intents. |
| `static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_STOP_REASON() = "stop_reason"` Key for the integer stop reason in `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_SET_STOP_REASON()` and `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_ADD_DOWNLOAD()` intents. |

| ### Protected constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#DownloadService(int)(int foregroundNotificationId)` Creates a DownloadService. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#DownloadService(int,long)( int foregroundNotificationId, long foregroundNotificationUpdateInterval )` Creates a DownloadService. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#DownloadService(int,long,java.lang.String,int,int)( int foregroundNotificationId, long foregroundNotificationUpdateInterval, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html channelId, @https://developer.android.com/reference/androidx/annotation/StringRes int channelNameResourceId, @https://developer.android.com/reference/androidx/annotation/StringRes int channelDescriptionResourceId )` Creates a DownloadService. |

| ### Public methods |
|---|---|
| `static https://developer.android.com/reference/android/content/Intent.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#buildAddDownloadIntent(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>,androidx.media3.exoplayer.offline.DownloadRequest,boolean)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz, https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadRequest downloadRequest, boolean foreground )` Builds an `https://developer.android.com/reference/android/content/Intent.html` for adding a new download. |
| `static https://developer.android.com/reference/android/content/Intent.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#buildAddDownloadIntent(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>,androidx.media3.exoplayer.offline.DownloadRequest,int,boolean)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz, https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadRequest downloadRequest, int stopReason, boolean foreground )` Builds an `https://developer.android.com/reference/android/content/Intent.html` for adding a new download. |
| `static https://developer.android.com/reference/android/content/Intent.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#buildPauseDownloadsIntent(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>,boolean)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz, boolean foreground )` Builds an `https://developer.android.com/reference/android/content/Intent.html` to pause all downloads. |
| `static https://developer.android.com/reference/android/content/Intent.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#buildRemoveAllDownloadsIntent(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>,boolean)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz, boolean foreground )` Builds an `https://developer.android.com/reference/android/content/Intent.html` for removing all downloads. |
| `static https://developer.android.com/reference/android/content/Intent.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#buildRemoveDownloadIntent(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>,java.lang.String,boolean)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz, https://developer.android.com/reference/java/lang/String.html id, boolean foreground )` Builds an `https://developer.android.com/reference/android/content/Intent.html` for removing the download with the `id`. |
| `static https://developer.android.com/reference/android/content/Intent.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#buildResumeDownloadsIntent(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>,boolean)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz, boolean foreground )` Builds an `https://developer.android.com/reference/android/content/Intent.html` for resuming all downloads. |
| `static https://developer.android.com/reference/android/content/Intent.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#buildSetRequirementsIntent(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>,androidx.media3.exoplayer.scheduler.Requirements,boolean)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz, https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Requirements requirements, boolean foreground )` Builds an `https://developer.android.com/reference/android/content/Intent.html` for setting the requirements that need to be met for downloads to progress. |
| `static https://developer.android.com/reference/android/content/Intent.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#buildSetStopReasonIntent(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>,java.lang.String,int,boolean)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html id, int stopReason, boolean foreground )` Builds an `https://developer.android.com/reference/android/content/Intent.html` for setting the stop reason for one or all downloads. |
| `static void` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#clearDownloadManagerHelpers()()` Clear all `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService.DownloadManagerHelper` before restarting the service. |
| `final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/os/IBinder.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#onBind(android.content.Intent)(https://developer.android.com/reference/android/content/Intent.html intent)` Throws `https://developer.android.com/reference/java/lang/UnsupportedOperationException.html` because this service is not designed to be bound. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#onCreate()()` |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#onDestroy()()` |
| `int` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#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)` |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#onTaskRemoved(android.content.Intent)(https://developer.android.com/reference/android/content/Intent.html rootIntent)` |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#onTimeout(int,int)(int startId, int fgsType)` |
| `static void` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#sendAddDownload(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>,androidx.media3.exoplayer.offline.DownloadRequest,boolean)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz, https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadRequest downloadRequest, boolean foreground )` Starts the service if not started already and adds a new download. |
| `static void` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#sendAddDownload(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>,androidx.media3.exoplayer.offline.DownloadRequest,int,boolean)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz, https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadRequest downloadRequest, int stopReason, boolean foreground )` Starts the service if not started already and adds a new download. |
| `static void` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#sendPauseDownloads(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>,boolean)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz, boolean foreground )` Starts the service if not started already and pauses all downloads. |
| `static void` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#sendRemoveAllDownloads(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>,boolean)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz, boolean foreground )` Starts the service if not started already and removes all downloads. |
| `static void` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#sendRemoveDownload(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>,java.lang.String,boolean)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz, https://developer.android.com/reference/java/lang/String.html id, boolean foreground )` Starts the service if not started already and removes a download. |
| `static void` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#sendResumeDownloads(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>,boolean)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz, boolean foreground )` Starts the service if not started already and resumes all downloads. |
| `static void` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#sendSetRequirements(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>,androidx.media3.exoplayer.scheduler.Requirements,boolean)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz, https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Requirements requirements, boolean foreground )` Starts the service if not started already and sets the requirements that need to be met for downloads to progress. |
| `static void` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#sendSetStopReason(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>,java.lang.String,int,boolean)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html id, int stopReason, boolean foreground )` Starts the service if not started already and sets the stop reason for one or all downloads. |
| `static void` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#start(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>)(https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz)` Starts a download service to resume any ongoing downloads. |
| `static void` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#startForeground(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>)(https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz)` Starts the service in the foreground without adding a new download request. |

| ### Protected methods |
|---|---|
| `abstract https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadManager` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#getDownloadManager()()` Returns a `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadManager` to be used to downloaded content. |
| `abstract https://developer.android.com/reference/android/app/Notification.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#getForegroundNotification(java.util.List<androidx.media3.exoplayer.offline.Download>,int)( https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/Download> downloads, @https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Requirements.RequirementFlags int notMetRequirements )` Returns a notification to be displayed when this service running in the foreground. |
| `abstract @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Scheduler` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#getScheduler()()` Returns a `https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Scheduler` to restart the service when requirements for downloads to continue are met. |
| `final void` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#invalidateForegroundNotification()()` Invalidates the current foreground notification and causes `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#getForegroundNotification(java.util.List<androidx.media3.exoplayer.offline.Download>,int)` to be invoked again if the service isn't stopped. |

### 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 [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()()` `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#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.**
`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

### ACTION_ADD_DOWNLOAD

```
public static final String ACTION_ADD_DOWNLOAD = "androidx.media3.exoplayer.downloadService.action.ADD_DOWNLOAD"
```

Adds a new download. Extras:

- `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_DOWNLOAD_REQUEST()` - A `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadRequest` defining the download to be added.
- `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_STOP_REASON()` - An initial stop reason for the download. If omitted `https://developer.android.com/reference/androidx/media3/exoplayer/offline/Download#STOP_REASON_NONE()` is used.
- `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND()` - See `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND()`.

### ACTION_INIT

```
public static final String ACTION_INIT = "androidx.media3.exoplayer.downloadService.action.INIT"
```

Starts a download service to resume any ongoing downloads. Extras:

- `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND()` - See `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND()`.

### ACTION_PAUSE_DOWNLOADS

```
public static final String ACTION_PAUSE_DOWNLOADS = "androidx.media3.exoplayer.downloadService.action.PAUSE_DOWNLOADS"
```

Pauses all downloads. Extras:

- `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND()` - See `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND()`.

### ACTION_REMOVE_ALL_DOWNLOADS

```
public static final String ACTION_REMOVE_ALL_DOWNLOADS = "androidx.media3.exoplayer.downloadService.action.REMOVE_ALL_DOWNLOADS"
```

Removes all downloads. Extras:

- `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND()` - See `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND()`.

### ACTION_REMOVE_DOWNLOAD

```
public static final String ACTION_REMOVE_DOWNLOAD = "androidx.media3.exoplayer.downloadService.action.REMOVE_DOWNLOAD"
```

Removes a download. Extras:

- `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_CONTENT_ID()` - The content id of a download to remove.
- `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND()` - See `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND()`.

### ACTION_RESUME_DOWNLOADS

```
public static final String ACTION_RESUME_DOWNLOADS = "androidx.media3.exoplayer.downloadService.action.RESUME_DOWNLOADS"
```

Resumes all downloads except those that have a non-zero `https://developer.android.com/reference/androidx/media3/exoplayer/offline/Download#stopReason()`. Extras:

- `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND()` - See `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND()`.

### ACTION_SET_REQUIREMENTS

```
public static final String ACTION_SET_REQUIREMENTS = "androidx.media3.exoplayer.downloadService.action.SET_REQUIREMENTS"
```

Sets the requirements that need to be met for downloads to progress. Extras:

- `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_REQUIREMENTS()` - A `https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Requirements`.
- `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND()` - See `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND()`.

### ACTION_SET_STOP_REASON

```
public static final String ACTION_SET_STOP_REASON = "androidx.media3.exoplayer.downloadService.action.SET_STOP_REASON"
```

Sets the stop reason for one or all downloads. To clear the stop reason, pass `https://developer.android.com/reference/androidx/media3/exoplayer/offline/Download#STOP_REASON_NONE()`. Extras:

- `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_CONTENT_ID()` - The content id of a single download to update with the stop reason. If omitted, all downloads will be updated.
- `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_STOP_REASON()` - An application provided reason for stopping the download or downloads, or `https://developer.android.com/reference/androidx/media3/exoplayer/offline/Download#STOP_REASON_NONE()` to clear the stop reason.
- `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND()` - See `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#KEY_FOREGROUND()`.

### DEFAULT_FOREGROUND_NOTIFICATION_UPDATE_INTERVAL

```
public static final long DEFAULT_FOREGROUND_NOTIFICATION_UPDATE_INTERVAL = 1000
```

Default foreground notification update interval in milliseconds.

### FOREGROUND_NOTIFICATION_ID_NONE

```
public static final int FOREGROUND_NOTIFICATION_ID_NONE = 0
```

Invalid foreground notification id that can be used to run the service in the background.

### KEY_CONTENT_ID

```
public static final String KEY_CONTENT_ID = "content_id"
```

Key for the `https://developer.android.com/reference/java/lang/String.html` content id in `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_SET_STOP_REASON()` and `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_REMOVE_DOWNLOAD()` intents.

### KEY_DOWNLOAD_REQUEST

```
public static final String KEY_DOWNLOAD_REQUEST = "download_request"
```

Key for the `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadRequest` in `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_ADD_DOWNLOAD()` intents.

### KEY_FOREGROUND

```
public static final String KEY_FOREGROUND = "foreground"
```

Key for a boolean extra that can be set on any intent to indicate whether the service was started in the foreground. If set, the service is guaranteed to call `https://developer.android.com/reference/android/app/Service.html#startForeground(int, android.app.Notification)`.

### KEY_REQUIREMENTS

```
public static final String KEY_REQUIREMENTS = "requirements"
```

Key for the `https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Requirements` in `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_SET_REQUIREMENTS()` intents.

### KEY_STOP_REASON

```
public static final String KEY_STOP_REASON = "stop_reason"
```

Key for the integer stop reason in `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_SET_STOP_REASON()` and `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#ACTION_ADD_DOWNLOAD()` intents.

## Protected constructors

### DownloadService

```
protected DownloadService(int foregroundNotificationId)
```

Creates a DownloadService.

If `foregroundNotificationId` is `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#FOREGROUND_NOTIFICATION_ID_NONE()` then the service will only ever run in the background, and no foreground notification will be displayed.

If `foregroundNotificationId` is not `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#FOREGROUND_NOTIFICATION_ID_NONE()` then the service will run in the foreground. The foreground notification will be updated at least as often as the interval specified by `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#DEFAULT_FOREGROUND_NOTIFICATION_UPDATE_INTERVAL()`.

| Parameters |
|---|---|
| `int foregroundNotificationId` | The notification id for the foreground notification, or `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#FOREGROUND_NOTIFICATION_ID_NONE()` if the service should only ever run in the background. |

### DownloadService

```
protected DownloadService(
    int foregroundNotificationId,
    long foregroundNotificationUpdateInterval
)
```

Creates a DownloadService.

| Parameters |
|---|---|
| `int foregroundNotificationId` | The notification id for the foreground notification, or `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#FOREGROUND_NOTIFICATION_ID_NONE()` if the service should only ever run in the background. |
| `long foregroundNotificationUpdateInterval` | The maximum interval between updates to the foreground notification, in milliseconds. Ignored if `foregroundNotificationId` is `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#FOREGROUND_NOTIFICATION_ID_NONE()`. |

### DownloadService

```
protected DownloadService(
    int foregroundNotificationId,
    long foregroundNotificationUpdateInterval,
    @Nullable String channelId,
    @StringRes int channelNameResourceId,
    @StringRes int channelDescriptionResourceId
)
```

Creates a DownloadService.

| Parameters |
|---|---|
| `int foregroundNotificationId` | The notification id for the foreground notification, or `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#FOREGROUND_NOTIFICATION_ID_NONE()` if the service should only ever run in the background. |
| `long foregroundNotificationUpdateInterval` | The maximum interval between updates to the foreground notification, in milliseconds. Ignored if `foregroundNotificationId` is `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#FOREGROUND_NOTIFICATION_ID_NONE()`. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html channelId` | An id for a low priority notification channel to create, or `null` if the app will take care of creating a notification channel if needed. If specified, must be unique per package. The value may be truncated if it's too long. Ignored if ` foregroundNotificationId` is `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#FOREGROUND_NOTIFICATION_ID_NONE()`. |
| `@https://developer.android.com/reference/androidx/annotation/StringRes int channelNameResourceId` | A string resource identifier for the user visible name of the notification channel. The recommended maximum length is 40 characters. The value may be truncated if it's too long. Ignored if `channelId` is null or if ` foregroundNotificationId` is `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#FOREGROUND_NOTIFICATION_ID_NONE()`. |
| `@https://developer.android.com/reference/androidx/annotation/StringRes int channelDescriptionResourceId` | A string resource identifier for the user visible description of the notification channel, or 0 if no description is provided. The recommended maximum length is 300 characters. The value may be truncated if it is too long. Ignored if `channelId` is null or if `foregroundNotificationId` is `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#FOREGROUND_NOTIFICATION_ID_NONE()`. |

## Public methods

### buildAddDownloadIntent

```
public static Intent buildAddDownloadIntent(
    Context context,
    Class<DownloadService> clazz,
    DownloadRequest downloadRequest,
    boolean foreground
)
```

Builds an `https://developer.android.com/reference/android/content/Intent.html` for adding a new download.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service being targeted by the intent. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadRequest downloadRequest` | The request to be executed. |
| `boolean foreground` | Whether this intent will be used to start the service in the foreground. |

| Returns |
|---|---|
| `https://developer.android.com/reference/android/content/Intent.html` | The created intent. |

### buildAddDownloadIntent

```
public static Intent buildAddDownloadIntent(
    Context context,
    Class<DownloadService> clazz,
    DownloadRequest downloadRequest,
    int stopReason,
    boolean foreground
)
```

Builds an `https://developer.android.com/reference/android/content/Intent.html` for adding a new download.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service being targeted by the intent. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadRequest downloadRequest` | The request to be executed. |
| `int stopReason` | An initial stop reason for the download, or `https://developer.android.com/reference/androidx/media3/exoplayer/offline/Download#STOP_REASON_NONE()` if the download should be started. |
| `boolean foreground` | Whether this intent will be used to start the service in the foreground. |

| Returns |
|---|---|
| `https://developer.android.com/reference/android/content/Intent.html` | The created intent. |

### buildPauseDownloadsIntent

```
public static Intent buildPauseDownloadsIntent(
    Context context,
    Class<DownloadService> clazz,
    boolean foreground
)
```

Builds an `https://developer.android.com/reference/android/content/Intent.html` to pause all downloads.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service being targeted by the intent. |
| `boolean foreground` | Whether this intent will be used to start the service in the foreground. |

| Returns |
|---|---|
| `https://developer.android.com/reference/android/content/Intent.html` | The created intent. |

### buildRemoveAllDownloadsIntent

```
public static Intent buildRemoveAllDownloadsIntent(
    Context context,
    Class<DownloadService> clazz,
    boolean foreground
)
```

Builds an `https://developer.android.com/reference/android/content/Intent.html` for removing all downloads.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service being targeted by the intent. |
| `boolean foreground` | Whether this intent will be used to start the service in the foreground. |

| Returns |
|---|---|
| `https://developer.android.com/reference/android/content/Intent.html` | The created intent. |

### buildRemoveDownloadIntent

```
public static Intent buildRemoveDownloadIntent(
    Context context,
    Class<DownloadService> clazz,
    String id,
    boolean foreground
)
```

Builds an `https://developer.android.com/reference/android/content/Intent.html` for removing the download with the `id`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service being targeted by the intent. |
| `https://developer.android.com/reference/java/lang/String.html id` | The content id. |
| `boolean foreground` | Whether this intent will be used to start the service in the foreground. |

| Returns |
|---|---|
| `https://developer.android.com/reference/android/content/Intent.html` | The created intent. |

### buildResumeDownloadsIntent

```
public static Intent buildResumeDownloadsIntent(
    Context context,
    Class<DownloadService> clazz,
    boolean foreground
)
```

Builds an `https://developer.android.com/reference/android/content/Intent.html` for resuming all downloads.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service being targeted by the intent. |
| `boolean foreground` | Whether this intent will be used to start the service in the foreground. |

| Returns |
|---|---|
| `https://developer.android.com/reference/android/content/Intent.html` | The created intent. |

### buildSetRequirementsIntent

```
public static Intent buildSetRequirementsIntent(
    Context context,
    Class<DownloadService> clazz,
    Requirements requirements,
    boolean foreground
)
```

Builds an `https://developer.android.com/reference/android/content/Intent.html` for setting the requirements that need to be met for downloads to progress.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service being targeted by the intent. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Requirements requirements` | A `https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Requirements`. |
| `boolean foreground` | Whether this intent will be used to start the service in the foreground. |

| Returns |
|---|---|
| `https://developer.android.com/reference/android/content/Intent.html` | The created intent. |

### buildSetStopReasonIntent

```
public static Intent buildSetStopReasonIntent(
    Context context,
    Class<DownloadService> clazz,
    @Nullable String id,
    int stopReason,
    boolean foreground
)
```

Builds an `https://developer.android.com/reference/android/content/Intent.html` for setting the stop reason for one or all downloads. To clear the stop reason, pass `https://developer.android.com/reference/androidx/media3/exoplayer/offline/Download#STOP_REASON_NONE()`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service being targeted by the intent. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html id` | The content id, or `null` to set the stop reason for all downloads. |
| `int stopReason` | An application defined stop reason. |
| `boolean foreground` | Whether this intent will be used to start the service in the foreground. |

| Returns |
|---|---|
| `https://developer.android.com/reference/android/content/Intent.html` | The created intent. |

### clearDownloadManagerHelpers

```
public static void clearDownloadManagerHelpers()
```

Clear all `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService.DownloadManagerHelper` before restarting the service.

Calling this method is normally only required if an app supports downloading content for multiple users for which different download directories should be used.

### onBind

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

Throws `https://developer.android.com/reference/java/lang/UnsupportedOperationException.html` because this service is not designed to be bound.

### onCreate

```
public void onCreate()
```

### onDestroy

```
public void onDestroy()
```

### onStartCommand

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

### onTaskRemoved

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

### onTimeout

```
public void onTimeout(int startId, int fgsType)
```

### sendAddDownload

```
public static void sendAddDownload(
    Context context,
    Class<DownloadService> clazz,
    DownloadRequest downloadRequest,
    boolean foreground
)
```

Starts the service if not started already and adds a new download.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service to be started. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadRequest downloadRequest` | The request to be executed. |
| `boolean foreground` | Whether the service is started in the foreground. |

### sendAddDownload

```
public static void sendAddDownload(
    Context context,
    Class<DownloadService> clazz,
    DownloadRequest downloadRequest,
    int stopReason,
    boolean foreground
)
```

Starts the service if not started already and adds a new download.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service to be started. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadRequest downloadRequest` | The request to be executed. |
| `int stopReason` | An initial stop reason for the download, or `https://developer.android.com/reference/androidx/media3/exoplayer/offline/Download#STOP_REASON_NONE()` if the download should be started. |
| `boolean foreground` | Whether the service is started in the foreground. |

### sendPauseDownloads

```
public static void sendPauseDownloads(
    Context context,
    Class<DownloadService> clazz,
    boolean foreground
)
```

Starts the service if not started already and pauses all downloads.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service to be started. |
| `boolean foreground` | Whether the service is started in the foreground. |

### sendRemoveAllDownloads

```
public static void sendRemoveAllDownloads(
    Context context,
    Class<DownloadService> clazz,
    boolean foreground
)
```

Starts the service if not started already and removes all downloads.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service to be started. |
| `boolean foreground` | Whether the service is started in the foreground. |

### sendRemoveDownload

```
public static void sendRemoveDownload(
    Context context,
    Class<DownloadService> clazz,
    String id,
    boolean foreground
)
```

Starts the service if not started already and removes a download.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service to be started. |
| `https://developer.android.com/reference/java/lang/String.html id` | The content id. |
| `boolean foreground` | Whether the service is started in the foreground. |

### sendResumeDownloads

```
public static void sendResumeDownloads(
    Context context,
    Class<DownloadService> clazz,
    boolean foreground
)
```

Starts the service if not started already and resumes all downloads.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service to be started. |
| `boolean foreground` | Whether the service is started in the foreground. |

### sendSetRequirements

```
public static void sendSetRequirements(
    Context context,
    Class<DownloadService> clazz,
    Requirements requirements,
    boolean foreground
)
```

Starts the service if not started already and sets the requirements that need to be met for downloads to progress.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service to be started. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Requirements requirements` | A `https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Requirements`. |
| `boolean foreground` | Whether the service is started in the foreground. |

### sendSetStopReason

```
public static void sendSetStopReason(
    Context context,
    Class<DownloadService> clazz,
    @Nullable String id,
    int stopReason,
    boolean foreground
)
```

Starts the service if not started already and sets the stop reason for one or all downloads. To clear stop reason, pass `https://developer.android.com/reference/androidx/media3/exoplayer/offline/Download#STOP_REASON_NONE()`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service to be started. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html id` | The content id, or `null` to set the stop reason for all downloads. |
| `int stopReason` | An application defined stop reason. |
| `boolean foreground` | Whether the service is started in the foreground. |

### start

```
public static void start(Context context, Class<DownloadService> clazz)
```

Starts a download service to resume any ongoing downloads.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service to be started. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#startForeground(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>)` |   |

### startForeground

```
public static void startForeground(Context context, Class<DownloadService> clazz)
```

Starts the service in the foreground without adding a new download request. If there are any not finished downloads and the requirements are met, the service resumes downloading. Otherwise it stops immediately.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService> clazz` | The concrete download service to be started. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#start(android.content.Context,java.lang.Class<? extends androidx.media3.exoplayer.offline.DownloadService>)` |   |

## Protected methods

### getDownloadManager

```
protected abstract DownloadManager getDownloadManager()
```

Returns a `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadManager` to be used to downloaded content. For each concrete download service subclass, this is called once in the lifecycle of the process when `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#onCreate()` is called on the first instance of the service. If the service is destroyed and a new instance is created later, the new instance will use the previously returned `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadManager` without this method being called again.

### getForegroundNotification

```
protected abstract Notification getForegroundNotification(
    List<Download> downloads,
    @Requirements.RequirementFlags int notMetRequirements
)
```

Returns a notification to be displayed when this service running in the foreground.

Download services that do not wish to run in the foreground should be created by setting the `foregroundNotificationId` constructor argument to `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#FOREGROUND_NOTIFICATION_ID_NONE()`. This method is not called for such services, meaning it can be implemented to throw `https://developer.android.com/reference/java/lang/UnsupportedOperationException.html`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/exoplayer/offline/Download> downloads` | The current downloads. |
| `@https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Requirements.RequirementFlags int notMetRequirements` | Any requirements for downloads that are not currently met. |

| Returns |
|---|---|
| `https://developer.android.com/reference/android/app/Notification.html` | The foreground notification to display. |

### getScheduler

```
protected abstract @Nullable Scheduler getScheduler()
```

Returns a `https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Scheduler` to restart the service when requirements for downloads to continue are met.

This method is not called on all devices or for all service configurations. When it is called, it's called only once in the life cycle of the process. If a service has unfinished downloads that cannot make progress due to unmet requirements, it will behave according to the first matching case below:

- If the service has `foregroundNotificationId` set to `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#FOREGROUND_NOTIFICATION_ID_NONE()`, then this method will not be called. The service will remain in the background until the downloads are able to continue to completion or the service is killed by the platform.
- If the device API level is less than 31, a `https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Scheduler` is returned from this method, and the returned `https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Scheduler``https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Scheduler#getSupportedRequirements(androidx.media3.exoplayer.scheduler.Requirements)` all of the requirements that have been specified for downloads to continue, then the service will stop itself and the `https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Scheduler` will be used to restart it in the foreground when the requirements are met.
- If the device API level is less than 31 and either `null` or a `https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Scheduler` that does not `https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Scheduler#getSupportedRequirements(androidx.media3.exoplayer.scheduler.Requirements)` all of the requirements is returned from this method, then the service will remain in the foreground until the downloads are able to continue to completion.
- If the device API level is 31 or above, then this method will not be called and the service will remain in the foreground until the downloads are able to continue to completion. A `https://developer.android.com/reference/androidx/media3/exoplayer/scheduler/Scheduler` cannot be used for this case due to [Android 12 foreground service launch restrictions](https://developer.android.com/about/versions/12/foreground-services).
- 

### invalidateForegroundNotification

```
protected final void invalidateForegroundNotification()
```

Invalidates the current foreground notification and causes `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadService#getForegroundNotification(java.util.List<androidx.media3.exoplayer.offline.Download>,int)` to be invoked again if the service isn't stopped.