说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

DownloadManager下载管理类2.3新增API介绍

HTML文档下载 WORD文档下载 PDF文档下载
DownloadManager下载管理类2.3新增API介绍

作者:Android开发网


  从Android 2.3开始新增了一个下载管理类,在SDK的文档中我们查找android.app.DownloadManager可以看到。下载管理类可以长期处理多个HTTP下载任务,客户端只需要给出请求的Uri和存放目标文件的位置即可,下载管理使用了一个AIDL服务器所以可以放心的在后台执行,同时实例化的方法需要使用getSystemService(Context.DOWNLOAD_SERVICE) ,Android123再次提醒使用API Level为9的用户可以轻松的通过新增的这个API实现Android平台上的文件下载操作。

 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这些基础概念了解的话,可以看到这个下载管理类可以帮我们减少很多不必要的代码编写。

在运行时动态生成多个相同的控件?-VB资料 在最小化状态时提供提示 -VB资料 暂时禁止窗口更新-VB资料 VB怎样得到文本框(TextBox)中的文本行数? 制造出透明的Form -VB资料 VB制作半透明窗体和形状不规则的窗体 VB制作方向按钮 VB制作渐变的窗口背景色 字体闪烁 -VB资料 自动改变控件大小-VB资料 自制IE风格按纽控件-VB资料 VB6.0中通过MSChart控件调用数据库 用VB6实现动态增减控件 ActiveX控件的创建-VB资料 ADO控件和DATA控件的冲突(不能共存)的解决方法-VB资料 Combo的自动查询技术 -VB资料 DirectX7.0使用心得(1) -VB资料 DirectX7.0使用心得(2) -VB资料 DirectX7.0使用心得(3) -VB资料 FSO对象模型在VB中的应用 MsComm 控件的文字传输范例 -VB资料 Office或IE4风格的ToolBar -VB资料 Regsvr32.exe注册控件的具体用法-VB资料 TextBox的自动调节 -VB资料 TextBox实现打印机效果 -VB资料 TreeView的基本操作-VB资料 VB5中DBGRID控件在VB6中使用 VB与MS-Draw开发通用作图软件 VB中APP对象及其应用 VB中list控件的功能扩充 VB中用Multimedia MCI控件开发多媒体应用 我为大家共享的资源.找我的人太多了,我吃不消.在这里列BILL.大家看看,书不算太多。 很傻的问题,在线等 ★★如何实现按一下按钮可以终止一个正在运行中的循环?请举个例子,谢谢! 谁能帮我提供一点资料或文档! 告急?(在线等待) 用正则表达式,怎么验证日期(yyyy-mm-dd)的输入啊? kao~ 请教有关MSWORD9.OLB的帮助文档是哪个? 怎样知道一个调度执行失败或没有执行???(MSSQL7)上火呀~~~ 如何将自己定义的记录类型转化成Tmemorystream对象? c++builder5的下载地址? 做个调查,来者有分。 ODBC下的数据库查询,急!急! 初学者的问题--com dll服务器如何在客户程序中使用? 如何统计 DBGrid 中记录的个数???? 请教:m_fLogfile.Read(pBuffer , sizeof(VNumAndPassWord)); 错在哪? 谁能替我做一张图片啊? 气死人了,安装红帽子在输入根口令时遇到的尴尬:( 奇怪的oracle数据库错误? 公布我的软件了——网络邮盘,国内日下载量>1000,国外<10 关于堆和栈的队! 请问,准考证的英文怎么说? ASP终极开发:请成功用INSTALLSHIELD设置好IIS的高手朋友进来看看。100分全散了!!!!! 是屏保的问题?还是硬件故障? 紧急救命啊!各位大虾:)98关机时断电出现的故障 初级问题,请教大侠 在C#里面如何取得这个SQL値那? 请教, 扫描的问题... 不好意思,还有问题,关于span,恳请高手答完再下班。 心情郁闷,各位朋友安慰我一下好么。 如何注册JDBC驱动啊!我手头好多的驱动但是我不知道如何的注册这些驱动 在RICHEDIT里怎么实现换行输出? 200分求快速取中值的算法!(thirdapple) Flash Action 如何定时,就像Javascript中的setTimeout()? 保护的问题 用一个关于Printer对象的问题?各位大虾,初来乍到,请多多关照。 请问如何自动提交一个FORM? 请问各位师兄:web开发如何起步?例如使用JSP? 求助! 如何知道电脑中的网卡是什么型号的? 大家请帮忙,兄弟必重谢,分都给了 如何制作含有msdn数据库的安装程序 Web Service服务程序如何增加对SSL的支持? 怎么還可以上網﹐向各位大蝦求救 请问如何自动提交一个FORM? 如何处理并发访问! 如何在网页中打开*.ocx组件?是否能打开? 如果给我再来一次的机会...我还是想说... 求随机数发生器的算法 高手来拿高分!!!!!!!!!求开发自定义服务器控件的好书或代码 那位有ESQL(嵌入SQL)中文资料? 如何select LONG类型的字段? 闲居初夏午睡起二绝句这两首古诗描写的时候什么时候的情景.还要有从古诗中找出的理由列出来 八下地理复习提纲 湘教版第一节 中国的主要产业第二节 沿海万里行······ for children,the important one is that of receiving gifts.其中OF是什么用法和意思? 英语翻译用中文 或罗马音 来翻译英文,如有大神音译,必定造福后人,比如学日语,不要,就是音译,牙麦迭 2011年底考四级,要怎么复习! The relation of genius to talent is the same as that of instinct to reason中that of的用法!去掉不用行么?这里是什么用法? 林俊杰的one 2011年英语四级考前如何系统复习? Is your school life that of other teens?这个句子中that是什么用法Is your school life ____ of other teens?a.this b.the same c.one d.that为什么选that啊? what's the difference between watching a movie and reading books求作文 She went to the zoo after lunch.(改为一般疑问句) A commonly held superstition is that of touching wood for luck.为什么加个of?这是什么特殊的用法吗?为什么is后面是that of touching不直接是is touching或者is that touch?到底为什么是of touching?为什么一定要加一 april that +of 是什么用法请举个例子好吗 为什么问句中glue前面是用some,而不用any april 翻译: 安徽省合肥市香樟城市花园 7栋10单元 507室 邮编241000翻译地址: 安徽省合肥市 芜宁路 香樟城市花园 7栋10单元 507室 邮编241000安徽省合肥市 镜湖区 芜宁路 香樟城市花园 7栋10单元 507 是在表请求的问句中some不用改any吗? April Fool愚人节乐一乐夫妻离婚争孩子,老婆理直气壮说:“孩子从我肚子里出来的,当然归我!”老公说:“笑话!简直是胡说八道.取款机里取出来的钱能归取款机吗?还不是谁插卡归谁! that + of 是什么用法,请举例说明 09年12月19号英语四级估分听力:短对话3个 长对话2个 听力短文理解3个 听力填词3个 听力句子0个快速阅读:填句子0个选词填空:1个仔细阅读:3个完型填空:7个翻译:0个作文中等 考四级该怎么复习 中译英,软件机器直译的勿进,地道一点1.已将化学制剂(chemical (IPA))及时清理出房间,并在房间中设置化学制剂的最大存放量(1瓶)2.增加一个可抽风的柜子去保存打印机,使其余净化间(clean 十二月19号考完四级之后多久可以拿证通过的情况下~ APRIL FOOL'S DAI 到安徽合肥肥东,哪个火车站离肥东最近交通方便,我要去肥东镇 撮镇 大丁村 马场组. 坐什么公交可以到附近.万分感谢坐什么公交,到哪个站下,然后怎么到撮镇 大丁村 马场组? 关于that of的用法They believe the data support an idea current among marine biologists,that of the "shifting baseline".这句话的意思是:在这些海生物学家中,他们相信目前的数据支持当前的想法,那就是所谓的“转 大学考英语四级.平时应该怎样复习?..考过1次了,成绩不怎么样,不知道该怎样复习,. 合肥市肥东县在哪学英语比较好 watch怎么读 Mary’s hair is longer than_____ Last year,there 15 students in our team.This year,there are 20 students in our team.(变同义句)句型转换1.___Would you mind going back to your seat?(作否定回答)___No,not ____ ____.2.I enjiy running every morning.(改同义句)I____________ 合肥肥东的变化快,急!6小时以内只要是农村的变化都可以 Sandy is ___at playing soccer than SimonA.better B .good C.wekk D.best STAY FOOL,STAY HUNGRY --- YOU'LL BE HAPPY .以前男朋友在我博客里的留言, 请教"中共合肥市直属机关工作委员会"的英文翻译 Sandy is (tall and thin).对括号部分提问.( )( )Sandy ( Sandy 后只有一个空,look like以外还能用什么好呢? 快考四级了,怎么复习?各位高手们出招吧最好具体点 合肥肥东县政府在哪怎么走都走不到 What on earth is that 与 What is that exactly (那到底是什么?) 两句一样吗? I'm not a fool,okay?someone why don't you just go to hell!You guys deserve each other!You HAPPY NOI'm not a fool,okay?someone why don't you just go to hell!You guys deserve each other!You HAPPY NOW这是完整的 过去式,some要改成any吗 侃的粤语读音?粤语怎么读 "闲居初夏午睡起二绝句"描写了什么季节?一.要长!二.不能和别人的一样!三.要两首都要回答!四.要有季节!五.分明一二两首!六.要有意思! some的过去式只要some的过去试只要答案正确, that is what I trying to do 是什么从句Jim,that is what I trying to do 是什么从句 闲居初夏午睡起二绝句描写什么时候的情景松阴一架半弓苔,偶欲看书又懒开.戏掬清泉洒蕉叶,儿童误认雨声来. do some reading 的过去式是什么? 求“数”字广州话读音. 闲居初夏午睡起二绝句描写什么时的情景,从诗中找理由 过去式的问句中前面的do变成过去式了后面的动词还要变过去式吗 闲居初夏午睡起二绝句描写了怎样的情景 This is the restaurant___we enjoyed our meal last weekA.that B.in which C.which D.in that do some shopping的过去式 侃的读音? 1.You are looking for the doctor.She is busy.2.This is our school.You visited last week.把它们改为定语从句 翻译:watch out 任务型阅读! 初二上地理晋教版复习提纲 关于watch out for和watch out 的区别?还有protect.from doing.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘