DownloadManager.Request


public static class DownloadManager.Request
extends Object

java.lang.Object
   ↳ android.app.DownloadManager.Request


This class contains all the information necessary to request a new download. The URI is the only required parameter. Note that the default download destination is a shared volume where the system might delete your file if it needs to reclaim space for system use. If this is a problem, use a location on external storage (see setDestinationUri(android.net.Uri).

Summary

Constants

int NETWORK_MOBILE

Bit flag for setAllowedNetworkTypes(int) corresponding to ConnectivityManager.TYPE_MOBILE.

int NETWORK_WIFI

Bit flag for setAllowedNetworkTypes(int) corresponding to ConnectivityManager.TYPE_WIFI.

int VISIBILITY_HIDDEN

This download doesn't show in the UI or in the notifications.

int VISIBILITY_VISIBLE

This download is visible but only shows in the notifications while it's in progress.

int VISIBILITY_VISIBLE_NOTIFY_COMPLETED

This download is visible and shows in the notifications while in progress and after completion.

int VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION

This download shows in the notifications after completion ONLY.

Public constructors

Request(Uri uri)

Public methods

DownloadManager.Request addRequestHeader(String header, String value)

Add an HTTP header to be included with the download request.

void allowScanningByMediaScanner()

This method was deprecated in API level 29. Starting in Q, this value is ignored. Files downloaded to directories owned by applications (e.g. Context.getExternalFilesDir(String)) will not be scanned by MediaScanner and the rest will be scanned.

DownloadManager.Request setAllowedNetworkTypes(int flags)

Restrict the types of networks over which this download may proceed.

DownloadManager.Request setAllowedOverMetered(boolean allow)

Set whether this download may proceed over a metered network connection.

DownloadManager.Request setAllowedOverRoaming(boolean allowed)

Set whether this download may proceed over a roaming connection.

DownloadManager.Request setDescription(CharSequence description)

Set a description of this download, to be displayed in notifications (if enabled)

DownloadManager.Request setDestinationInExternalFilesDir(Context context, String dirType, String subPath)

Set the local destination for the downloaded file to a path within the application's external files directory (as returned by Context.getExternalFilesDir(String).

DownloadManager.Request setDestinationInExternalPublicDir(String dirType, String subPath)

Set the local destination for the downloaded file to a path within the public external storage directory (as returned by Environment.getExternalStoragePublicDirectory(String)).

DownloadManager.Request setDestinationUri(Uri uri)

Set the local destination for the downloaded file.

DownloadManager.Request setMimeType(String mimeType)

Set the MIME content type of this download.

DownloadManager.Request setNotificationVisibility(int visibility)

Control whether a system notification is posted by the download manager while this download is running or when it is completed.

DownloadManager.Request setRequiresCharging(boolean requiresCharging)

Specify that to run this download, the device needs to be plugged in.

DownloadManager.Request setRequiresDeviceIdle(boolean requiresDeviceIdle)

Specify that to run, the download needs the device to be in idle mode.

DownloadManager.Request setShowRunningNotification(boolean show)

This method was deprecated in API level 15. use setNotificationVisibility(int)

DownloadManager.Request setTitle(CharSequence title)

Set the title of this download, to be displayed in notifications (if enabled).

DownloadManager.Request setVisibleInDownloadsUi(boolean isVisible)

This method was deprecated in API level 29. Starting in Q, this value is ignored. Only files downloaded to public Downloads directory (as returned by Environment.getExternalStoragePublicDirectory(String) with Environment.DIRECTORY_DOWNLOADS) will be visible in system's Downloads UI and the rest will not be visible. All non-visible downloads that are not modified in the last 7 days will be deleted during idle runs. (e.g. Context.getExternalFilesDir(String)) will not be visible.

Inherited methods

Constants

NETWORK_MOBILE

Added in API level 9
public static final int NETWORK_MOBILE

Bit flag for setAllowedNetworkTypes(int) corresponding to ConnectivityManager.TYPE_MOBILE.

Constant Value: 1 (0x00000001)

NETWORK_WIFI

Added in API level 9
public static final int NETWORK_WIFI

Bit flag for setAllowedNetworkTypes(int) corresponding to ConnectivityManager.TYPE_WIFI.

Constant Value: 2 (0x00000002)

VISIBILITY_HIDDEN

Added in API level 11
public static final int VISIBILITY_HIDDEN

This download doesn't show in the UI or in the notifications.

Constant Value: 2 (0x00000002)

VISIBILITY_VISIBLE

Added in API level 11
public static final int VISIBILITY_VISIBLE

This download is visible but only shows in the notifications while it's in progress.

Constant Value: 0 (0x00000000)

VISIBILITY_VISIBLE_NOTIFY_COMPLETED

Added in API level 11
public static final int VISIBILITY_VISIBLE_NOTIFY_COMPLETED

This download is visible and shows in the notifications while in progress and after completion.

Constant Value: 1 (0x00000001)

VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION

Added in API level 12
public static final int VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION

This download shows in the notifications after completion ONLY. It is usuable only with DownloadManager.addCompletedDownload(String, String, boolean, String, String, long, boolean).

Constant Value: 3 (0x00000003)

Public constructors

Request

Added in API level 9
public Request (Uri uri)

Parameters
uri Uri: the HTTP or HTTPS URI to download.

Public methods

addRequestHeader

Added in API level 9
public DownloadManager.Request addRequestHeader (String header, 
                String value)

Add an HTTP header to be included with the download request. The header will be added to the end of the list.

Parameters
header String: HTTP header name

value String: header value

Returns
DownloadManager.Request this object

allowScanningByMediaScanner

Added in API level 11
Deprecated in API level 29
public void allowScanningByMediaScanner ()

This method was deprecated in API level 29.
Starting in Q, this value is ignored. Files downloaded to directories owned by applications (e.g. Context.getExternalFilesDir(String)) will not be scanned by MediaScanner and the rest will be scanned.

If the file to be downloaded is to be scanned by MediaScanner, this method should be called before DownloadManager.enqueue(Request) is called.

setAllowedNetworkTypes

Added in API level 9
public DownloadManager.Request setAllowedNetworkTypes (int flags)

Restrict the types of networks over which this download may proceed. By default, all network types are allowed. Consider using setAllowedOverMetered(boolean) instead, since it's more flexible.

As of Build.VERSION_CODES.N, setting only the NETWORK_WIFI flag here is equivalent to calling setAllowedOverMetered(boolean) with false.

Parameters
flags int: any combination of the NETWORK_* bit flags.

Returns
DownloadManager.Request this object

setAllowedOverMetered

Added in API level 16
public DownloadManager.Request setAllowedOverMetered (boolean allow)

Set whether this download may proceed over a metered network connection. By default, metered networks are allowed.

Parameters
allow boolean

Returns
DownloadManager.Request

setAllowedOverRoaming

Added in API level 9
public DownloadManager.Request setAllowedOverRoaming (boolean allowed)

Set whether this download may proceed over a roaming connection. By default, roaming is allowed.

Parameters
allowed boolean: whether to allow a roaming connection to be used

Returns
DownloadManager.Request this object

setDescription

Added in API level 9
public DownloadManager.Request setDescription (CharSequence description)

Set a description of this download, to be displayed in notifications (if enabled)

Parameters
description CharSequence

Returns
DownloadManager.Request this object

setDestinationInExternalFilesDir

Added in API level 9
public DownloadManager.Request setDestinationInExternalFilesDir (Context context, 
                String dirType, 
                String subPath)

Set the local destination for the downloaded file to a path within the application's external files directory (as returned by Context.getExternalFilesDir(String).

The downloaded file is not scanned by MediaScanner. But it can be made scannable by calling allowScanningByMediaScanner().

Parameters
context Context: the Context to use in determining the external files directory

dirType String: the directory type to pass to Context.getExternalFilesDir(String)

subPath String: the path within the external directory, including the destination filename

Returns
DownloadManager.Request this object

Throws
IllegalStateException If the external storage directory cannot be found or created.

setDestinationInExternalPublicDir

Added in API level 9
public DownloadManager.Request setDestinationInExternalPublicDir (String dirType, 
                String subPath)

Set the local destination for the downloaded file to a path within the public external storage directory (as returned by Environment.getExternalStoragePublicDirectory(String)).

The downloaded file is not scanned by MediaScanner. But it can be made scannable by calling allowScanningByMediaScanner().

For applications targeting Build.VERSION_CODES.Q or above, WRITE_EXTERNAL_STORAGE permission is not needed and the dirType must be one of the known public directories like Environment.DIRECTORY_DOWNLOADS, Environment.DIRECTORY_PICTURES, Environment.DIRECTORY_MOVIES, etc.

Parameters
dirType String: the directory type to pass to Environment.getExternalStoragePublicDirectory(String)

subPath String: the path within the external directory, including the destination filename

Returns
DownloadManager.Request this object

Throws
IllegalStateException If the external storage directory cannot be found or created.

setDestinationUri

Added in API level 9
public DownloadManager.Request setDestinationUri (Uri uri)

Set the local destination for the downloaded file. Must be a file URI to a path on external storage, and the calling application must have the WRITE_EXTERNAL_STORAGE permission.

The downloaded file is not scanned by MediaScanner. But it can be made scannable by calling allowScanningByMediaScanner().

By default, downloads are saved to a generated filename in the shared download cache and may be deleted by the system at any time to reclaim space.

For applications targeting Build.VERSION_CODES.Q or above, WRITE EXTERNAL_STORAGE permission is not needed and the uri must refer to a path within the directories owned by the application (e.g. Context.getExternalFilesDir(String)) or a path within the top-level Downloads directory (as returned by Environment.getExternalStoragePublicDirectory(String) with Environment.DIRECTORY_DOWNLOADS). All non-visible downloads that are not modified in the last 7 days will be deleted during idle runs.

Parameters
uri Uri: a file Uri indicating the destination for the downloaded file.

Returns
DownloadManager.Request this object

setMimeType

Added in API level 9
public DownloadManager.Request setMimeType (String mimeType)

Set the MIME content type of this download. This will override the content type declared in the server's response.

Parameters
mimeType String

Returns
DownloadManager.Request this object

setNotificationVisibility

Added in API level 11
public DownloadManager.Request setNotificationVisibility (int visibility)

Control whether a system notification is posted by the download manager while this download is running or when it is completed. If enabled, the download manager posts notifications about downloads through the system NotificationManager. By default, a notification is shown only when the download is in progress.

It can take the following values: VISIBILITY_HIDDEN, VISIBILITY_VISIBLE, VISIBILITY_VISIBLE_NOTIFY_COMPLETED.

If set to VISIBILITY_HIDDEN, this requires the permission android.permission.DOWNLOAD_WITHOUT_NOTIFICATION.

Parameters
visibility int: the visibility setting value

Returns
DownloadManager.Request this object

setRequiresCharging

Added in API level 24
public DownloadManager.Request setRequiresCharging (boolean requiresCharging)

Specify that to run this download, the device needs to be plugged in. This defaults to false.

Parameters
requiresCharging boolean: Whether or not the device is plugged in.

Returns
DownloadManager.Request

setRequiresDeviceIdle

Added in API level 24
public DownloadManager.Request setRequiresDeviceIdle (boolean requiresDeviceIdle)

Specify that to run, the download needs the device to be in idle mode. This defaults to false.

Idle mode is a loose definition provided by the system, which means that the device is not in use, and has not been in use for some time.

Parameters
requiresDeviceIdle boolean: Whether or not the device need be within an idle maintenance window.

Returns
DownloadManager.Request

setShowRunningNotification

Added in API level 9
Deprecated in API level 15
public DownloadManager.Request setShowRunningNotification (boolean show)

This method was deprecated in API level 15.
use setNotificationVisibility(int)

Control whether a system notification is posted by the download manager while this download is running. If enabled, the download manager posts notifications about downloads through the system NotificationManager. By default, a notification is shown. If set to false, this requires the permission android.permission.DOWNLOAD_WITHOUT_NOTIFICATION.

Parameters
show boolean: whether the download manager should show a notification for this download.

Returns
DownloadManager.Request this object

setTitle

Added in API level 9
public DownloadManager.Request setTitle (CharSequence title)

Set the title of this download, to be displayed in notifications (if enabled). If no title is given, a default one will be assigned based on the download filename, once the download starts.

Parameters
title CharSequence

Returns
DownloadManager.Request this object

setVisibleInDownloadsUi

Added in API level 9
Deprecated in API level 29
public DownloadManager.Request setVisibleInDownloadsUi (boolean isVisible)

This method was deprecated in API level 29.
Starting in Q, this value is ignored. Only files downloaded to public Downloads directory (as returned by Environment.getExternalStoragePublicDirectory(String) with Environment.DIRECTORY_DOWNLOADS) will be visible in system's Downloads UI and the rest will not be visible. All non-visible downloads that are not modified in the last 7 days will be deleted during idle runs. (e.g. Context.getExternalFilesDir(String)) will not be visible.

Set whether this download should be displayed in the system's Downloads UI. True by default.

Parameters
isVisible boolean: whether to display this download in the Downloads UI

Returns
DownloadManager.Request this object