public class DownloadManager
extends Object
java.lang.Object | |
↳ | android.app.DownloadManager |
下载管理器是一个处理长时间运行的HTTP下载的系统服务。 客户可能会要求将URI下载到特定的目标文件。 下载管理器将在后台进行下载,负责HTTP交互并在故障后或重新连接更改和系统重新启动后重试下载。 应通过getSystemService(String)
通过DOWNLOAD_SERVICE
获得getSystemService(String)
的DOWNLOAD_SERVICE
。 通过此API请求下载的应用程序应该注册一个广播接收器ACTION_NOTIFICATION_CLICKED
以便在用户点击通知中的下载内容或从下载UI中点击正确的时候进行处理。 请注意,该应用程序必须具有使用此类的INTERNET
权限。
Nested classes |
|
---|---|
class |
DownloadManager.Query 该类可用于过滤下载管理器查询。 |
class |
DownloadManager.Request 该类包含请求新下载所需的全部信息。 |
Public methods |
|
---|---|
long |
addCompletedDownload(String title, String description, boolean isMediaScannerScannable, String mimeType, String path, long length, boolean showNotification) 将文件添加到下载数据库系统,以便它可以出现在下载应用程序中(因此可以通过下载应用程序进行管理)。 |
long |
addCompletedDownload(String title, String description, boolean isMediaScannerScannable, String mimeType, String path, long length, boolean showNotification, Uri uri, Uri referer) 将文件添加到下载数据库系统,以便它可以出现在下载应用程序中(因此可以通过下载应用程序进行管理)。 |
long |
enqueue(DownloadManager.Request request) 排队一个新的下载。 |
static Long |
getMaxBytesOverMobile(Context context) 返回可能通过移动连接进行下载的最大大小(以字节为单位); 如果没有限制,则返回null |
String |
getMimeTypeForDownloadedFile(long id) 如果文件已成功下载,则返回给定下载文件ID的媒体类型。 |
static Long |
getRecommendedMaxBytesOverMobile(Context context) 返回可能通过移动连接进行下载的建议最大大小(以字节为单位); 如果没有建议的限制,则为null。 |
Uri |
getUriForDownloadedFile(long id) 如果文件成功下载,则返回给定下载文件ID的 |
ParcelFileDescriptor |
openDownloadedFile(long id) 打开下载的文件以供阅读。 |
Cursor |
query(DownloadManager.Query query) 向下载管理器询问已下载的请求。 |
int |
remove(long... ids) 取消下载并将其从下载管理器中删除。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
String ACTION_DOWNLOAD_COMPLETE
下载完成后,下载管理器发送的广播意图操作。
常量值:“android.intent.action.DOWNLOAD_COMPLETE”
String ACTION_NOTIFICATION_CLICKED
当用户从系统通知或下载用户界面点击正在运行的下载时,下载管理器发送的广播意图操作。
常量值:“android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED”
String ACTION_VIEW_DOWNLOADS
意图操作以启动显示所有下载的活动。
常量值:“android.intent.action.VIEW_DOWNLOADS”
String COLUMN_BYTES_DOWNLOADED_SO_FAR
到目前为止下载的字节数。
常量值:“bytes_so_far”
String COLUMN_DESCRIPTION
客户端提供的此下载说明。 这将显示在系统通知中。 缺省为空字符串。
常量值:“描述”
String COLUMN_LAST_MODIFIED_TIMESTAMP
上次修改下载时的时间戳, System.currentTimeMillis()
(以UTC表示的挂钟时间)。
常量值:“last_modified_timestamp”
String COLUMN_LOCAL_FILENAME
此常数在API级别24中已弃用。
应用程序应该转换为使用openFileDescriptor(Uri, String)
。
磁盘上下载的文件的路径。
请注意,应用程序可能没有文件系统权限来直接访问此路径。 应用程序应该使用openFileDescriptor(Uri, String)
来获得访问权限,而不是直接打开此路径。
常量值:“local_filename”
String COLUMN_LOCAL_URI
Uri下载的文件将被保存。 如果客户端提供了目的地,那么将在这里使用该URI。 否则,该值最初将为空,并且一旦开始下载,就会用生成的URI填充该值。
常量值:“local_uri”
String COLUMN_MEDIAPROVIDER_URI
MediaProvider中用于此下载条目的相应条目的URI。 它用于从MediaProvider数据库中删除从下载列表中删除的条目。
常量值:“mediaprovider_uri”
String COLUMN_MEDIA_TYPE
互联网媒体下载文件的类型。 如果在创建时没有提供任何值,则它将初始为空,并且将在下载开始后根据服务器的响应进行填充。
常量值:“media_type”
String COLUMN_REASON
提供有关下载状态的更多详细信息。 它的含义取决于COLUMN_STATUS
的值。 当COLUMN_STATUS
是STATUS_FAILED
,这表示发生的错误类型。 如果发生HTTP错误,它将保存RFC 2616中定义的HTTP状态代码。否则,它将保存一个ERROR_ *常量。 当COLUMN_STATUS
是STATUS_PAUSED
,这表明下载暂停的原因。 它将保存一个PAUSED_ *常量。 如果COLUMN_STATUS
既不是STATUS_FAILED
也不是STATUS_PAUSED
,则此列的值未定义。
也可以看看:
常数值:“原因”
String COLUMN_TOTAL_SIZE_BYTES
下载的总大小(以字节为单位)。 这将最初为-1,并将在下载开始后填写。
常量值:“total_size”
int ERROR_CANNOT_RESUME
当发生一些可能的暂时错误时, COLUMN_REASON
值,但我们无法恢复下载。
常数值:1008(0x000003f0)
int ERROR_DEVICE_NOT_FOUND
没有找到外部存储设备时的COLUMN_REASON
。 通常,这是因为SD卡没有安装。
常量值:1007(0x000003ef)
int ERROR_FILE_ALREADY_EXISTS
当请求的目标文件已存在时(下载管理器不会覆盖现有文件), COLUMN_REASON
。
常量值:1009(0x000003f1)
int ERROR_FILE_ERROR
COLUMN_REASON
值在出现存储问题时不符合任何其他错误代码。 适当时使用更具体的ERROR_INSUFFICIENT_SPACE
和ERROR_DEVICE_NOT_FOUND
。
常量值:1001(0x000003e9)
int ERROR_HTTP_DATA_ERROR
在HTTP级别发生接收或处理数据的错误时, COLUMN_REASON
。
常量值:1004(0x000003ec)
int ERROR_INSUFFICIENT_SPACE
当存储空间不足时, COLUMN_REASON
。 通常,这是因为SD卡已满。
常量值:1006(0x000003ee)
int ERROR_TOO_MANY_REDIRECTS
当重定向太多时, COLUMN_REASON
。
常量值:1005(0x000003ed)
int ERROR_UNHANDLED_HTTP_CODE
当收到HTTP代码时,下载管理器无法处理的 COLUMN_REASON
。
常量值:1002(0x000003ea)
int ERROR_UNKNOWN
下载完成时COLUMN_ERROR_CODE的值的错误不符合任何其他错误代码。
常量值:1000(0x000003e8)
String EXTRA_DOWNLOAD_ID
意图额外包含在 ACTION_DOWNLOAD_COMPLETE
意图中,指示刚刚完成的下载的ID(作为一长)。
常量值:“extra_download_id”
String EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS
当收到对多个通知的点击时,以下提供了与下载通知相对应的下载id数组,该下载通知被点击。 它可以由使用getLongArrayExtra(String)
的这个意图的接收器检索。
常量值:“extra_click_download_ids”
String INTENT_EXTRAS_SORT_BY_SIZE
意向额外包含在 ACTION_VIEW_DOWNLOADS
以按尺寸排序模式启动DownloadApp。
常量值:“android.app.DownloadManager.extra_sortBySize”
int PAUSED_QUEUED_FOR_WIFI
当下载超过移动网络下载的大小限制并且下载管理器正在等待Wi-Fi连接继续时, COLUMN_REASON
。
常量值:3(0x00000003)
int PAUSED_UNKNOWN
由于其他原因下载暂停时, COLUMN_REASON
值。
常量值:4(0x00000004)
int PAUSED_WAITING_FOR_NETWORK
当下载正在等待网络连接继续时, COLUMN_REASON
。
常量值:2(0x00000002)
int PAUSED_WAITING_TO_RETRY
当下载暂停时,由于发生了一些网络错误,并且下载管理器在重试请求之前正在等待,因此 COLUMN_REASON
。
常数值:1(0x00000001)
int STATUS_FAILED
当下载失败(并且不会被重试)时, COLUMN_STATUS
。
常量值:16(0x00000010)
int STATUS_SUCCESSFUL
下载成功完成后, COLUMN_STATUS
。
常量值:8(0x00000008)
long addCompletedDownload (String title, String description, boolean isMediaScannerScannable, String mimeType, String path, long length, boolean showNotification)
将文件添加到下载数据库系统,以便它可以出现在下载应用程序中(因此可以通过下载应用程序进行管理)。
通过将参数isMediaScannerScannable设置为true,使MediaScanner可扫描文件很有帮助。 它使文件在管理应用程序(例如Gallery App)的媒体中可见,这可能是使用此API的有用目的。
Parameters | |
---|---|
title |
String : the title that would appear for this file in Downloads App. |
description |
String : the description that would appear for this file in Downloads App. |
isMediaScannerScannable |
boolean : true if the file is to be scanned by MediaScanner. Files scanned by MediaScanner appear in the applications used to view media (for example, Gallery app). |
mimeType |
String : mimetype of the file. |
path |
String : absolute pathname to the file. The file should be world-readable, so that it can be managed by the Downloads App and any other app that is used to read it (for example, Gallery app to display the file, if the file contents represent a video/image). |
length |
long : length of the downloaded file |
showNotification |
boolean : true if a notification is to be sent, false otherwise |
Returns | |
---|---|
long |
an ID for the download entry added to the downloads app, unique across the system This ID is used to make future calls related to this download. |
long addCompletedDownload (String title, String description, boolean isMediaScannerScannable, String mimeType, String path, long length, boolean showNotification, Uri uri, Uri referer)
将文件添加到下载数据库系统,以便它可以出现在下载应用程序中(因此可以通过下载应用程序进行管理)。
通过将参数isMediaScannerScannable设置为true,使MediaScanner可扫描文件很有帮助。 它使文件在管理应用程序(例如Gallery App)的媒体中可见,这可能是使用此API的有用目的。
Parameters | |
---|---|
title |
String : the title that would appear for this file in Downloads App. |
description |
String : the description that would appear for this file in Downloads App. |
isMediaScannerScannable |
boolean : true if the file is to be scanned by MediaScanner. Files scanned by MediaScanner appear in the applications used to view media (for example, Gallery app). |
mimeType |
String : mimetype of the file. |
path |
String : absolute pathname to the file. The file should be world-readable, so that it can be managed by the Downloads App and any other app that is used to read it (for example, Gallery app to display the file, if the file contents represent a video/image). |
length |
long : length of the downloaded file |
showNotification |
boolean : true if a notification is to be sent, false otherwise |
uri |
Uri : the original HTTP URI of the download |
referer |
Uri : the HTTP Referer for the download |
Returns | |
---|---|
long |
an ID for the download entry added to the downloads app, unique across the system This ID is used to make future calls related to this download. |
long enqueue (DownloadManager.Request request)
排队一个新的下载。 一旦下载管理器准备好执行并且连接可用,下载将自动开始。
Parameters | |
---|---|
request |
DownloadManager.Request : the parameters specifying this download |
Returns | |
---|---|
long |
an ID for the download, unique across the system. This ID is used to make future calls related to this download. |
Long getMaxBytesOverMobile (Context context)
返回可能通过移动连接进行下载的最大大小(以字节为单位); 如果没有限制,则返回null
Parameters | |
---|---|
context |
Context : the Context to use for accessing the ContentResolver |
Returns | |
---|---|
Long |
maximum size, in bytes, of downloads that may go over a mobile connection; or null if there's no limit |
String getMimeTypeForDownloadedFile (long id)
如果文件已成功下载,则返回给定下载文件ID的媒体类型。 否则,返回null。
Parameters | |
---|---|
id |
long : the id of the downloaded file. |
Returns | |
---|---|
String |
the media type of the given downloaded file id, if download was successful. null otherwise. |
Long getRecommendedMaxBytesOverMobile (Context context)
返回可能通过移动连接进行下载的建议最大大小(以字节为单位); 如果没有建议的限制,则为null。 用户可以选择绕过此限制。
Parameters | |
---|---|
context |
Context : the Context to use for accessing the ContentResolver |
Returns | |
---|---|
Long |
recommended maximum size, in bytes, of downloads that may go over a mobile connection; or null if there's no recommended limit. |
Uri getUriForDownloadedFile (long id)
如果文件成功下载,则返回给定下载文件ID的Uri
。 否则,返回null。
Parameters | |
---|---|
id |
long : the id of the downloaded file. |
Returns | |
---|---|
Uri |
the Uri of the given downloaded file id, if download was successful. null otherwise. |
ParcelFileDescriptor openDownloadedFile (long id)
打开下载的文件以供阅读。 下载必须完成。
Parameters | |
---|---|
id |
long : the ID of the download |
Returns | |
---|---|
ParcelFileDescriptor |
a read-only ParcelFileDescriptor |
Throws | |
---|---|
FileNotFoundException |
if the destination file does not already exist |
Cursor query (DownloadManager.Query query)
向下载管理器询问已下载的请求。
Parameters | |
---|---|
query |
DownloadManager.Query : parameters specifying filters for this query |
Returns | |
---|---|
Cursor |
a Cursor over the result set of downloads, with columns consisting of all the COLUMN_* constants. |
int remove (long... ids)
取消下载并将其从下载管理器中删除。 每个下载将在运行时停止,并且不再可通过下载管理器访问。 如果下载的文件部分或完整,则会被删除。
Parameters | |
---|---|
ids |
long : the IDs of the downloads to remove |
Returns | |
---|---|
int |
the number of downloads actually removed |