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

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

MongoDB的得与失 开箱即用!Android四款系统架构工具 谁说Kinect只是玩物?微软研究院使用它实现口语手语实时翻译 新浪微博推出粉丝服务平台 引发两微PK大战 MDCC2013移动开发者大会最新日程发布 门票优惠最后1天 英特尔CEO:EUV光刻技术或助力芯片突破摩尔定律 从微软大数据日看到的,银行、交通、医疗实践之路 IDC:iPad市场份额遭Android平板蚕食 滑至29.6% [TUP第30期]直击移动应用开发难点 探讨跨平台最佳解决方案 用动态语言编写程序,命名更重要 命中率80%,磁盘I/O减半,Flashcache的发展史 这次它很低调:谷歌正式发布Android4.4和Nexus 5 iPhone 5S来了,iPhone 6还会远吗?概念机来袭 [开源推荐]PhysicsJS:基于JavaScript的强大的物理引擎 望虚窥实!专访Oculus Rift创始人Palmer Luckey 利益至上,开源也不免于此 开发者必备,超实用的PHP代码片段! 福利来了!AngularJS资源大集锦 移动周报:“360儿童卫士”手环的是与非 Ion Stoica和他的数据故事(上) 开发者必备:测试网站速度的五个免费在线工具 谷歌员工曝光在谷歌工作那些最糟糕的事情 MDCC 2013全民移动 玩转智能硬件展 如何降低白噪声对网站用户体验的影响? 谁才是真正的资深开发者? 东软董事长刘积仁阐述三大战略 构建以知识资产驱动的商业模式 一切皆为 JavaScript 黑莓:弃私有化任命华人为临时CEO 卖给联想的节奏? 谁说WP仍然不行?意大利WP份额已超iOS MDCC之移动娱乐游戏峰会:百家手游齐逐金玩奖 专访Mozilla宫力:基于Web是Firefox OS最大的资本 IBM软件清库存(大优惠) 〉〉〉〉〉〉〉〉求一份对旧系统进行分析、整合、优化的文档 又是闪烁,头大! 简单问题,请紧急指导.(在线) help help : fortran + dll = ? 奇怪的现象:判断不了SQL sum()查询结果!!! 2003高考试题 设置访问表命令:“access-list 2 permit 10.0.0.0 0.0.0.255”中10.0.0.0 和 0.0.0.255分别指什么? 请问谁知道这是什么缘故啊? 如何计算cpu和memory的一般的使用上限 在delphi中使用什么报表控件打印的报表效果较好 谁知道db或dbf头文件的格式? 急急 NMFtp中我想从ftp服务器下载指定文件扩展名的文件,该怎么办? 初始化页面的时候,如何使TextMode="Password"的asp:textbox有默认值显示? IBM软件清库存(大优惠) 又是可恶的乱码问题 struts与数据库!在线等待! 如何开发asp.net程序(基于vb) vc++的链接错误 如何用程序动态的获得activex控件的方法属性事件信息 请教:使用web.xml做资源约束时如何由自己的程序来做用户验证 请问:怎样编程来来虚拟网卡? 急!创建LOOKUP的问题 如何计算cpu和memory的一般的使用上限 新问题请教! 老问题:从Excel文件里把数据导入导数据库中 有汇编玩的非常牛的人吗??? 字符串操作的简单问题 学习J2EE需要装什么软件? >>有关记录的问题??<< 请高手指教:出现“ORA12663:服务器未提供客户机要求的服务”问题,怎么解决? 大侠救我! 动态sql问题请教,谢谢 填充combobox的问题 windowsxp不能创建拨号连接 怎樣轉換時間格式 ACCESS问题 Linux下上网问题?在线等待!急!急!急! 终极讨论:从Excel文件里面导入数据 winsock的问题 关于WINDOWS下邮件程序编写问题 Solaris下的Makefile问题 在lan里面的两台主机之间怎么配ppp连接,没有modem 我的SQL数据库安装的是实例,好象有问题哦! 高分求票据、合同套打代码! 事务问题,请大家帮忙,在线等待,50分相送!!!! xml解析的问题? 关于CRuntimeClass,请指教。 100分求解(在线等待) 终极讨论:从Excel文件里面导入数据 CString怎样转换为char * 类型? 数学中 钝角假设和锐角假设是指什么?谢谢.在看黎曼几何和罗巴切夫斯基几何简介的时候看到的名词. 2009初二寒假英语日记5篇 我英语不是非常好 想考本科但是要过英语a及 求方法如题 命题p:任意x∈R,x^2≥0.命题p的否定和非p分别是怎样的?我主要想搞清楚这种命题里,“否定”和“非”的区别是什么... 寒假日记(英语)5篇(初二)带翻译.不要复制的.记得要是想个国中生写得.不要跟外国人写的一样. suggestion怎么用 萍果手机发短信,怎么没有汉字、只有拼音? sb with sb+is sb and 已知二次函数 f(x),f(1)=4,f(2)=7,f(-1)=10.求这个二次函数的解析式 高数 拉格朗日乘数法(2元的)推理疑问与(7)一行的 fy(X0,y0)+λφy(x0,y0)=0 怎么推导出来的 sb with sb +is sb and sb +are English is widely used _____ travellers and business people all over the world.A.to B.as C.by D.for 请翻译, 高数 拉格朗日乘数法44题怎么算? 柔性制造单元FMC与柔性制造系统FMS有什么相同和不同?CIMS有那些基本功能模块组成? 养怡之福可得永年的永年是什么意思? 1.已知“命题p:(x-m)^2>3(x-m)”是“命题q:x^2+3x-43(x-m)”是“命题q:x^2+3x-4 这是哪国的语言啊,做了一个奇怪的梦,梦中的外国人给我讲了很多,只记住一句.WU MI TANG 乌咪汤 若偶函数f(x)的定义域为【-1,1】,且在【0,1】上单调递减,若f(1-m) 已知点O(2x,y²+4)与点Q(x²+1,-4y)关于坐标原点对称,试求x+y的值 After discussion,his suggestion is that his brother ( ) to the front.A sendingB should sendC sendD be sent 中华苏维埃第一次全国代表大会和全国第一次代表大会有什么不同?中国苏维埃第一次全国代表大会与全国第一次代表大会有什么不同(就是1921年的那一次)? “阳奉阴陪”这个词语的一、三两个字意思相反,二、四两个字意思相反,请写三个这样的词语:天南地北 上行下效南辕北辙南来北往厚此薄彼 在三角形ABC中,已知c=根号2+根号6,C=60度,求a+b的取值范围. 阴菜是什么菜 英语翻译Specious,however,has the negative suggestion of using deception to make something false appear true. 英语翻译中远物流是我国最大的中外合资第三方物流企业,随着市场竞争的加剧,企业纷纷在创新战略、加强增值服务上下功夫.中远集团为了更好的物流服务在国内、国际市场中赢得竞争优势, 两会中的人民代表大会和每五年一次的全国代表大会的区别是什么?如果本年度召开了全国代表大会,还要召开两会中的全国代表大会么? 翻译:1.你真好,给了我这么多建议(suggestion) 2.请代我向你的父母问好.(regards) 养怡之福可得永年怎样理解 几何除了欧式几何还有哪些几何大类? 陶渊明的 爱莲说为什么里面主要说的是喜欢菊花 而不说莲花呢? 请帮忙将Serving suggestion翻译成阿拉伯文, 英语翻译1、图片中使用白盒代替彩盒2、这种包装方式不能通过drop test3、详细包装方式,请查看附件的说明4、由于我们没有做过12pcs的包装方式,所以我们没有Die-lines,但我可以提供Color box的参 name that place 帮忙翻译给领导的建议信件我认为我们缺少一个关于XXX的标准文档.以此文档来约束XX的流程、记录客户需求、相关责任人和问题的解决日期.I consider that we need a formular standard document about XXX.It' 英语翻译This email is to confirm that your email has been received.If you are applying for an advertised vacancy please ensure you attach your CV and supporting documentation.Please note the company does not accept prospective applications. No one was aware_________Jane had gone.A.where that B.of the place C.of where D.the place 谁可以同时用上眉清目秀、红光满面、大步流星、心旷神怡造句急用! 曹操的"盈缩之期,不但在天;养怡之福,可得永年."是什摸意思? 22短文两篇第二课时爱莲说,陶渊明为什么独爱菊花 眉清目秀、红光满面、大步流星、心旷神怡怎样造句? “盈缩之期,不但在天;养怡之福,可得永年.幸甚至哉,歌以咏志.”意思. It got its name from the wooden fence that stood where the street now 翻译成英文“准确定位细分市场” 导入柔性化管理机制,以适应市场快速变化的需求.(翻译英文,误用翻译软件) 怎么理解“你的心里只有你”这句话?好吧,俩高二学生,约定高考后双方都没男女朋友的话便在一起,现在双方依旧没男女朋友,都开始为重本冲刺.但我写了一本青春纪念册,关于我和她的很多事 眉清目秀、疾步如飞、口若悬河造句 已知二次函数f(x)满足f(0)=f(4),且f(x)=0的两根平方和为10,图像经过(0,3)点,求f(x)的解析式如题 这表情什么意思! 英语完型 求讲解 英语翻译刚刚在微信里头看到前世是怎么死的,由于蛮无聊的,就测了一下,出来的是 粤语 笑西死,你前世既然一棵桉树,= =能帮我翻译一下吗,人家测出来的再奇葩好歹也是国语,这粤语...真心蛮 π_π……这表情是指什么意思?我送了一份礼物给心上人,是条白色长裙,她发来这个表情π_π…… 1.甲数和乙数的比是2:3,甲数占乙数的几分之几,乙数比甲数多( ),甲数比乙数少几分之几.2.小明五分之一小时走了十五分之七千米,他一小时走( )千米,走一千米要( )小时. 已知二次函数f(x)满足f(0)=f(4),且f(x)=0的两个平方和为10,图像经过(0,3)点,求f(x)的解析式. 😪这是个什么表情?什么意思? 大拇指只有两个关节,这样的结构,有什么好处?回答完整一些 考好英语笔试部分的窍门 方法 欧式几何和罗巴切夫斯基几何和黎曼几何各有什么特点,都适用什么范围, 二年级寒假关于新闻的日记(5篇) 如何使用suggestion 浙江部分行政区划调整 绍兴县上虞市撤宁波住博会市民看房重开发商 遗憾大牌通讯:历史遗迹记录昔日辉煌――泰国旧英国铜像常被挂内裤乳罩 政府被迫将其英国铜像常被挂内裤乳罩 政府被迫将其通讯:历史遗迹记录昔日辉煌――泰国旧亲善合作 睦邻友好——国内外人士积极马来西亚举办“小状元汉语经典诵读大赛巴基斯坦塔利班头目死于美无人机空袭 英国一医院医疗过失误诊流产 恐致死逾第五届中国木质玩具文化节在浙江云和开为阻法院强制执行 浙江金华一老人扬言浙江金华一智障儿命悬半空 特勤消防空宁波银行发力托管业务 首只公募基金开浙江云和经贸合作洽谈签约引资50多亿把美式“监听帝国”关入“笼子”杭城周末马拉松大派对 关键词:超越、美国无人机再次出手清除巴塔首领 和谈巴基斯坦塔利班头目死于美无人机空袭 中朝俄荣膺第14届中国吴桥国际杂技艺古巴宣布取缔私营电影放映厅瘦身达人一月怒甩23斤,分享给大家的阿里影业牵手派拉蒙,中国电影大航海时从概念车到量产,乐视还差几个发布会?助力“国际化”加速东航靠近国际投资者国产手机新“四大天王”落定,联想们能世界地球日,你能我们的家园做些什么?民国大师“傍黑”:章太炎为杜月笙修家致原油投资者:一路走来你是否也曾孤单谈谈2200万的网红:日光之下,并无你单知道有氧运动,但其实瘦肚子它更有通讯:返乡遥遥无期生活热情不熄中国女教授太牛了:新成果兼顾矛与盾,投资者必看:房地产和股市终将殊途同归从任正非到马化腾 他们才是真正的“网4年或8万公里整车质保 特斯拉新Mo凯迪拉克XT5:“雅奇”不是少数派2016款别克英朗,懂你的心声更懂你伊朗沙特石油争霸赛,谁的心机更深欧罗巴之春:从塞纳河到多瑙河(中篇·投资的最高境界是等待任正非真实身价曝光:超过马云、马化腾
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘