[Android] DownloadManager下载管理类2.3新增API介绍
DownloadManager类提供了以下几种方法来处理,
long enqueue(DownloadManager.Request request) //存入队列一个新的下载项
ParcelFileDescriptor openDownloadedFile(long id) //打开一个下载后的文件用于读取,参数中的long型id是一个provider中的一条记录。
Cursor query(DownloadManager.Query query) //查询一个下载,返回一个Cursor
int remove(long... ids) //取消下载同时移除这些条从下载管理中。
我们可以看到提供的方法都比较简单,给我们操作的最终封装成为一个provider数据库的方式进行添加、查询和移除,但是对于查询和添加任务的细节,我们要看看DownloadManager.Request类和DownloadManager.Query 类了。
一、DownloadManager.Request类的成员和定义
DownloadManager.Request addRequestHeader(String header, String value) // 添加一个Http请求报头,对于这两个参数,Android开发网给大家举个小例子,比如说User-Agent值可以为Android123或 Windows XP等等了,主要是给服务器提供标识。
DownloadManager.Request setAllowedNetworkTypes(int flags) //设置允许使用的网络类型,这一步Android 2.3做的很好,目前有两种定义分别为NETWORK_MOBILE和NETWORK_WIFI我们可以选择使用移动网络或Wifi方式来下载。
DownloadManager.Request setAllowedOverRoaming(boolean allowed) //对于下载,考虑到流量费用,这里是否允许使用漫游。
DownloadManager.Request setDescription(CharSequence description) //设置一个描述信息,主要是最终显示的notification提示,可以随便写个自己区别
DownloadManager.Request setDestinationInExternalFilesDir(Context context, String dirType, String subPath) //设置目标存储在外部目录,一般位置可以用 getExternalFilesDir()方法获取。
DownloadManager.Request setDestinationInExternalPublicDir(String dirType, String subPath) //设置外部存储的公共目录,一般通过getExternalStoragePublicDirectory()方法获取。
DownloadManager.Request setDestinationUri(Uri uri) //设置需要下载目标的Uri,可以是http、ftp等等了。
DownloadManager.Request setMimeType(String mimeType) //设置mime类型,这里看服务器配置,一般国家化的都为utf-8编码。
DownloadManager.Request setShowRunningNotification(boolean show) //是否显示下载进度的提示
DownloadManager.Request setTitle(CharSequence title) //设置notification的标题
DownloadManager.Request setVisibleInDownloadsUi(boolean isVisible) //设置下载管理类在处理过程中的界面是否显示
当然了Google还提供了一个简单的方法来实例化本类,这个构造方法为DownloadManager.Request(Uri uri) ,我们直接填写一个Uri即可,上面的设置使用默认情况。
二、DownloadManager.Query类
对于当前下载内容的状态,我们可以使用DownloadManager.Query类来获取,本类比较简单,仅仅提供了两个方法。
DownloadManager.Query setFilterById(long... ids) //根据id来过滤查找。
DownloadManager.Query setFilterByStatus(int flags) //根据任务的状态来查找。
详细的状态在android.app.DownloadManager类中有定义,目前Android 2.3中的定义为:
int STATUS_FAILED 失败
int STATUS_PAUSED 暂停
int STATUS_PENDING 等待将开始
int STATUS_RUNNING 正在处理中
int STATUS_SUCCESSFUL 已经下载成功
最后Android开发网提醒大家要说的是因为DownloadManager类提供的query方法返回一个Cursor对象,这些状态保存在这个游标的COLUMN_STATUS 字段中。
1. 下载的状态完成均是以广播的形式通知大家,目前API Level为9定义了下面三种Intent的action
ACTION_DOWNLOAD_COMPLETE下载完成的动作。
ACTION_NOTIFICATION_CLICKED 当用户单击notification中下载管理的某项时触发。
ACTION_VIEW_DOWNLOADS 查看下载项
2. 对于一个尚未完成的项,在Cursor中我们查找COLUMN_REASON字段,可能有以下定义:
int ERROR_CANNOT_RESUME 不能够继续,由于一些其他原因。
int ERROR_DEVICE_NOT_FOUND 外部存储设备没有找到,比如SD卡没有插入。
int ERROR_FILE_ALREADY_EXISTS 要下载的文件已经存在了,Android123提示下载管理类是不会覆盖已经存在的文件,所以如果需要重新下载,请先删除以前的文件。
int ERROR_FILE_ERROR 可能由于SD卡原因导致了文件错误。
int ERROR_HTTP_DATA_ERROR 在Http传输过程中出现了问题。
int ERROR_INSUFFICIENT_SPACE 由于SD卡空间不足造成的
int ERROR_TOO_MANY_REDIRECTS 这个Http有太多的重定向,导致无法正常下载
int ERROR_UNHANDLED_HTTP_CODE 无法获取http出错的原因,比如说远程服务器没有响应。
int ERROR_UNKNOWN 未知的错误类型.
3. 有关暂停的一些状态,同样COLUMN_REASON字段的值可能是以下定义
int PAUSED_QUEUED_FOR_WIFI 由于移动网络数据问题,等待WiFi连接能用后再重新进入下载队列。
int PAUSED_UNKNOWN 未知原因导致了任务下载的暂停.
int PAUSED_WAITING_FOR_NETWORK 可能由于没有网络连接而无法下载,等待有可用的网络连接恢复。.
int PAUSED_WAITING_TO_RETRY 由于重重原因导致下载暂停,等待重试。
有关Android 2.3中新增的下载管理DownloadManager的介绍基本上已经完全讲完,如果你对Cursor、Provider这些基础概念了解的话,可以看到这个下载管理类可以帮我们减少很多不必要的代码编写。
本文转自 llb988 51CTO博客,原文链接:http://blog.51cto.com/llb988/472355,如需转载请自行联系原作者
[Android] DownloadManager下载管理类2.3新增API介绍相关推荐
- Android DownloadManager下载管理,app更新
目录 前言 一.介绍 二.使用事项 三.Request类注意事项 四.Query 类 五.下载完成监听 六.原理简析 七.小结 前言 在日常APP的开发中,通常情况下无可避免的要与调用网络后台数据接口 ...
- [Android]之一:Android系统下载管理DownloadManager
嗷,这个android系统下载管理DownloadManager功能还是蛮强大的.虽然老大只是让我做一个下载工具类给他们使用,但是想加深一下印象,接下来是摘抄笔记,以后也要自己再看看不要又忘了. 一. ...
- Android系统下载管理DownloadManager
转载: http://www.trinea.cn/android/android-downloadmanager/ http://www.trinea.cn/android/android-downl ...
- DownloadManager下载管理
从Android2.3开始新增了一个下载管理类,在SDK的文档中我们查找android.app.DownloadManager可以看到.下载管理类可以长期处理多个HTTP下载任务,客户端只需要给出请求 ...
- Android DownloadManager下载完成事件监听(系列4)
Android DownloadManager下载完成事件监听(系列4) 我在之前写了写一些关于Android DownloadManager 的文章: (系列1)<Android大数据. ...
- Android DownloadManager下载状态查询(2)
Android DownloadManager下载状态查询(2) 在我写的前一篇文章中, <Android大数据.断点续传.耗时下载之DownloadManager开发简介(1)> ...
- Android系统下载管理DownloadManager功能介绍及使用示例
一.DownloadManager简单介绍 DownloadManager是系统开放给第三方应用使用的类,包含两个静态内部类DownloadManager.Query和DownloadManager. ...
- Windows Mobile 5.0新增API介绍(转自MSDN)
Windows Mobile 5.0 提供很多新的 API.尽管这些新的 API 分布在许多不同的服务中,但它们都是为提高开发人员工作效率这一共同目标服务的.通过将很多经常执行的任务合并到操作系统中, ...
- Android 图片下载工具类
public class DownGoodsImage {private Context context;private String filePath;private String fileName ...
最新文章
- 编译/链接过程如何工作?
- 服务器损坏文件怎么办,服务器文件系统损坏的处理
- Centos下 ffmpeg 和opencv一起配合处理视频
- php 比较数组的不同的值,php array_udiff 比较两个数组的键值,并返回差集
- linux查看passwd最后一行,Linux命令总结
- MySQL回闪_MySQL进行BINLOG回闪
- ASP.NET 使用Ajax
- c++怎么确定一个整数有几位_《小数乘整数》说课稿
- window下安装scapy
- 硬件 JavaScript - 一个【电阻分压器 - 计算器】
- 计算机文件不能复制到u盘,大文件无法复制到u盘里解决方法
- 利用DHT网络原理制作bt采集蜘蛛
- html网页设计字体变色,网页制作怎么改变字体颜色
- ArcGIS遇到严重的应用程序错误的解决办法
- 搭建 WordPress 博客教程
- 38年来,NBA最有价值球员|数据分析
- Linux CentOS 7中安装XXX(持续更新)
- babylon101| 09. Intersect Collisions - mesh(网格交叉碰撞)
- python发短信sim800_玩转 ESP32 + Arduino (十八) 采用SIM800L发送短信和定位(基础知识)...
- Vue 源码解读 起步(二)