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

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

营造云安全生态链 第五届云安全联盟高峰论坛在京顺利召开 中国大数据六大技术变迁记 【最具价值CTO评选秀】当当网CTO熊长青:结合行业及技术发展,规划技术方向 社交颠覆传统,环信技术交流沙龙纪实(组图) 揭秘经典案例炼成之道 微信开发者大会精华回顾 从一家电子商务网站学到的经验教训 【最具价值CTO评选秀】极路由CTO康晓宁:极客转型CTO的感悟 盘点这些年来的“微信万能论” 《近匠》亲加通讯云:IM即时通讯API的极致服务者 TCL杯HTML5智能电视开发大赛完美落幕,8项获奖应用大揭晓! Xcode 6.2 Beta发布,支持WatchKit的iOS 8.2 SDK来了! 【最具价值CTO评选秀】携程高级技术副总裁叶亚明:从呼叫中心到移动互联网的演进 为什么靠谱的公司都应该参加CTO评选? 【深度剖析】微软开源.NET:战略重心已从PC转移到云端 专访POWER 8编程挑战赛选手黄文超:非科生的编程算法之路 BDTC 2014干货精彩不断,四大全天技术论坛议题全面曝光 全功能API!开源2D游戏引擎Firmament 微信公众平台新增“微信连Wi-Fi”功能,打通线上线下闭环 马化腾:微信在一线城市活跃 QQ增长从城市到农村 承包MIPS开发!Imagination发布双Codescape MIPS SDK 不任性了!Google Play宣布开通国内开发者通道 脑洞大开!用Swift写个Material Design组件库 美国最大婚恋网站eHarmony利用Hadoop、OpenStack重构自己 每个Java开发者都应该知道的5个JDK工具 异构计算应用研讨暨OpenCL编程培训在上海和西安成功举行! APIs.io:用来发布和发现API的利器 偏爱MySQL,Nifty使用4个Web Server支撑5400万个用户网站 直接拿来用!十大Material Design开源项目 初探WatchKit,开发者必须知道的6件事! 【MDCC专访】环信CEO刘俊彦:音视频即时通讯将成为技术壁垒 第十七届全国工程建设计算机应用大会在京召开,AMD受邀详解GPU Computing! 如何将Delphi程序改为汇编? 非常着急,各位高手一起来帮我研究一下这个工作流系统怎么用? 简单问题,肯定给分! 据说高程的通过标准是上下午加起来算了? 请斑竹帮忙 请问各位前辈: 在执行中出现"incorrect syntax near 'JCSZ'"的错误提示,如何解决? 下标越界是什么意思啊? 一个基础性的问题,同样一份C/C++源代码可以在UNIX 和WINDOWS运行需要具有的条件是啥??? 在一台计算机上安装两个键盘同时接受输入的问题 对XML文档中的数据能不能进行SELECE操作???? 如何用JAVA实现263邮件那样的邮件粘贴功能 请教各位大哥,小弟最近遇到麻烦,为什么我的程序安装时,出现expsrv.dll无法注册的提示?expsrv.dll有什么作用?怎样闭掉? 如何在两个结构相同的库之间倒数?? 请问如何简单确定右键点击的是哪个控件? 有哪位高手可以给出windows98登录时网络服务的身份验证模块的程序或相关资料的呢?非常感谢啦 在CTreeCtrl中同时使用系统图标与自定义图标的问题?? SHGetFileInfo()为什么在Win2000下工作不正常? 请问高手:DataGrid的问题 jsp和servlet是怎样交互的? 请问 有什么方法能实现 在几个数中随机取出几个数 谢谢 请问:在执行文件DPR中有一段代码出现错误,请各问指点! 两个问题:1 关于.NET中 一个新控件propertyGrid1的使用问题;2 我想生成一个由lable和TextBox合成的控件(label在左,TextBox靠其右),怎么办? 分栏打印 依旧是undefined function mysqsl_connect()问题 急:如何在生成的exe中添加新的属性页,显示更多文件信息? V-DVD ROM!? MSDN上的例子需要uafxcwd.lib,怎么找不到呢? 请问窗口的other事件是如何触发执行的 JSP如何学习 vc在什么时候会引起小喇叭的叫声 请教高手,如果在VB里实现内存共享? 用什么方法可以转换图片类型?譬如将BMP格式的转换为JPEG格式的,请各位大哥给点提示!!! 关于vb script数组和函数功能的二个问题!高难度! 关天打印问题? 只能最小化到屏幕的左下角 *急:无为,acptvb,请帮忙看看http://www.csdn.net/Expert/topic/426/426766.shtm (有关XMLHTTP) 在php中要取出一段字符串的前n个字节,而又要判断最后一个是中文还是英文,如果是中文则将最后半个字符省略应该怎么做? 有在BCB5中用过sapi5朗读中文的朋友,高分送上! 最初级的问题,关于编译程序的。 重庆市信息产业办公室荣获全国最差信息产业办公室称号 大家用PB创建Jaguar应用程序时,一般创建一个大包还是多个包阿? 奇怪的问题,来者有分!没回答问题的先到先得! 如何把临时表建在内存中 请教一个关于DELPHI多线程的问题 *急:无为,acptvb,请帮忙看看http://www.csdn.net/Expert/topic/426/426766.shtm(有关XMLHTTP) 比爱情少一点,比友情多一点,即不讨厌又不来电,你能做到吗? 请教一个问题,一个分两帧的窗口,分别是两个CView的子类。一个view里的下拉框选中一条记录,使另一个view刷新。不知道用什么mfc函数。 有关新开窗口的问题! please intrduce a good muti-root soft for win95,win98,winme,win2000,winxp 求助:哪位大侠能介绍一下网络传输设备(象 HDSL、Cable Modem)的品牌、厂家和性能? 我的ie浏览器怎么了? 用滑轮组匀速提升重为3000牛的物体,作用在绳子自由端的拉力为625牛,拉力做功的功率为1875瓦,滑轮组的机 在整数数位顺序表中,每两个计数单位间的进率是十.小学十年级数学题判断对错. 每相邻两个计数单位之间的进率是什么 某滑轮组匀速提升重为2000N的物体,作用在绳子自由端的拉力为625N,物体在20S内匀速上升5m滑轮组机械效率为80%,不计绳重和摩擦.1、绳子段数n2、总功功率3、若提升3000N的物体,滑轮组飞机械效率 从个位起,把整数的数位有顺序的排列出来 . 十位的计数单位是【 】,万位的计数单位是【】相邻两个计数单间的进率是【 】急啊啊啊啊啊! 一盏吊灯用绳挂在天花板上,天花板受到拉力的施力物体是天花板吊绳吊灯地球 用滑轮组匀速提起400牛重的物体,作用在绳子自由端的拉力需125牛,拉力做功的功率为250瓦,此时滑轮组的机求 动滑轮的重 如果用这个滑轮组匀速提升900牛重物 作用在绳子上的拉力为多少 机械 挂在天花板上的物体绳子对物体的拉力来自于本身还是地球就是和物体重力平衡的那个力各楼朋友们我是说绳子本身为何有拉力为什么QQ上的人说这个拉力是万有引力? 和吊灯重力平衡的力是;A吊灯对电线的拉力B电线对天花板的拉力C电线对吊灯的拉力D天花板对电线的拉力 用滑轮匀速提升重为2000牛的物体,作用在绳子自由端的拉力大小为625牛,拉力的功率为1250瓦,滑轮组的机械公式 一物体质量为M.用绳子挂在天花板上,当以六分之一的加速度竖直加速上升时,求绳对物体的拉力? 天花板上悬挂着一只吊灯.灯绳对灯的拉力和( )是一对平衡力;灯对灯绳的拉力和( )是一对相互作用力 高中物理需平衡摩擦力的实验有哪些 要全! 一物体用绳悬挂于天花板上处于静止它所受绳子拉力的反作用力作用在__上它所受绳子拉力的平衡力是___ 一书静止在桌面,书受到的支持力和桌子受到的压力是同时发生吗 一道科学物理力学上的求绳端拉力F的题重物A是体积为10立方分米,密度为7.9*10三次方 千克/立方米的实心金属块,将它完全浸没在水中,始终未提出水面.若不计摩擦和动滑轮重,要保持平衡,求: 高中物理力学实验哪些需要平衡摩擦力哪些不用?为什么? 高一物理:物体在传送带的摩擦力方向如何判断?用下两个图请具体讲解 计数单位是什么 高中物理必修一二中哪些实验需平衡摩擦力? 【高一物理】平衡摩擦力是什么?怎么做?顺便求(3)详细过程为了验证“当质量一定时,物体的加速度与它所受的合外力成正比”.一组同学用图甲所示的装置进行实验,并将得到的实验数据 个级的计数单位有哪些 在牛顿第二定律的实验中,平衡摩擦力的作用是什么,为什么一定要平衡摩擦力,如果不,有什么影响呢,谢谢 一根绳子能承受的最大拉力是25牛,拉重700牛物体,1米每秒的速度,绳子刚好不断,若5米每秒,绳子会断吗?一根绳子能承受的最大拉力是25牛,拉重700牛的物体,以1米每秒的速度,绳子刚好不会断,若 计数单位都有哪些? 与亿相邻的计数单位是()() 与亿位相邻的数位是()位()位 与亿相邻的自然数是()和()快 一根绳子只能承受1200牛的拉力,如果用它提升浸没在水中10米深 一根绳子只能承受1200牛的拉力,如果一根绳子只能承受1200牛的拉力,如果用它提升浸没在水中10米深,重力为4500牛体积为20分米3的 高中物理中,m 用滑轮组匀速提起400牛的中物体,作用在绳子自由端的拉力为125牛,拉力的功率为250瓦,此时滑轮组的机械效率为80%,不计摩擦和绳重求:(1)物体被匀速提升的速度这一小题答案究竟是多少? 绳子一端系在车上,另一端系在树上,绳长10米,用300牛的拉力把绳子中点向下拉0.5米绳子作用在车上力大A:3000牛B:6000牛C:300牛D:1500根3 物体受重力、支持力、摩擦力、拉力,属于弹力的有什么? 重为G的物体被手抵在墙上,受墙的摩擦力是否为G?那难道不受手的摩擦力吗,那物体岂不不平衡? 用动滑轮提升重物,重物的质量是50千克,绳子自由端在300牛的拉力F作用下以0.2米/秒的速度沿竖直方向匀速上升,求拉力F的功率及动滑轮的机械效率 万级的数位有( ),它们的计数单位分别是( ) 假如没有摩擦力 数位就是计数单位这句话是错的.哪里错了?如果要这句话正确怎么改?错在什么地方? 如何区分“数位”和“计数单位” 在功与速度变化关系中,不平衡摩擦力,能否利用这个实验装置探究拉力与摩擦力的合力做的功速度变化的关系标准答案是:假如不平衡摩擦力,那么当拉力与摩擦力的合力为零时,小车的位置不 探究加速度与力,质量的关系的实验中,需要平衡摩擦力,平衡摩擦力时应该使小车1.挂上钩码,拖上纸带2.不挂钩码,拖上纸带3.不挂钩码,不拖纸带4.挂上钩码,不拖纸带 数位和计数单位的区别? 高中物理实验探究加速度与力和质量的关系时为什么要平衡摩擦力?重点说下目的,不平衡摩擦力会怎样. 实验探究加速度与力,质量的关系中:木板倾角过大是平衡摩擦力过大,还是平衡摩擦力不足还有平衡摩擦力过大过小的图像是什么, 在升降机的天花板上用轻弹簧悬挂一个小球,升降机静止时,弹簧伸长量为4cm,升降机运动时,弹簧伸长量为3cm,则升降机的运动情况可能是A.以a=1/4g的加速度加速下降B.以a=3/4g的加速度加速下降C. 假如没有了摩擦力鬼画符鬼画符鬼画符后 当做探究加速度与力.质量的关系平衡摩擦力时.斜面倾角偏大的a-f图像以a为纵坐标.以F为横坐标.图象是一条倾斜直线.但倾角偏大.所以不过坐标原点.而是在纵轴上有一段截矩这是为什么? 电梯的天花板上悬挂着一根弹簧,弹簧下端悬挂一重物,电梯向上做匀速直线运动,电梯停止后小球运动状况 选择题;把数字写在某一【】上,它才表示一定的数值.A记数单位,B位数C数位 在牛顿第二定律的实验中,如果平衡摩擦力过大或过小,则f与1/m的图像怎么画 数位和计数单位意义不同对吗 个十百千万······是( )a计数法b数位名称c计数单位( 用AC和BC吊起一重物,绳与竖直方向夹角分别为30度和60度,AC绳能承受的最大的拉力是150牛而BC能承受的最大的拉力是100牛,求物体最大重力不能超过多少? 绳端拉动一米,滑轮组内的物体上升几米?有公式吗 将物体用绳子吊在天花板上,绳所受物体的弹力方向是什么?是竖直向上,竖直向下还是指向绳子收缩方向?注意:是绳子受物体,不是物体受绳子… 绳AC,BC吊一重100N的物体,AC,BC与竖直方向夹角为30度与45度,求AC,AB对物体拉力 某人用25牛的力拉滑轮组的绳子移动4米,而总重为80牛的物体只升高1米,则滑轮组的机械效率为多少如果是对的,没有过程也行 将物体用绳吊在天花板上,绳受物体给的弹力方向是向上的怎么看弹力的方向就高手解答? 用两根绳吊起100牛的重物,两绳与竖直方向的夹角一个是60度一个是30度..求出每根绳子上的拉力 用滑轮组匀速提升重2000N的物体,作用在绳子自由端的拉力大小为625N,拉力做功为12500J,滑轮组的机械效率为80%,不计轮与转轴之间的摩擦和绳重.(1)求物体上升的高度;(2)如果使用这个滑 弹力的方向从施力物体指向受力物体,比如天花板上吊个物体对绳子的拉力就不否和这种说法 悬挂在天花板下重60N的小球,在均匀水平风力作用下偏离竖直方向30度角,求风对小球的作用力和绳子的拉力
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn