android webview downloadManager文件下载管理

  次阅读 作者:智能小宝 来源:互联网 2015-10-02 21:35 我要评论(0)

一。downloadmanager类说明:

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

DownloadManager类提供了以下几种方法来处理,

Java代码longenqueue(DownloadManager.Request request)//存入队列一个新的下载项

ParcelFileDescriptoropenDownloadedFile(long id)//打开一个下载后的文件用于读取,参数中的long型id是一个provider中的一条记录。

Cursorquery(DownloadManager.Query query)//查询一个下载,返回一个Cursor

intremove(long... ids)//取消下载同时移除这些条从下载管理中。

我们可以看到提供的方法都比较简单,给我们操作的最终封装成为一个provider数据库的方式进行添加、查询和移除,但是对于查询和添加任务的细节,我们要看看DownloadManager.Request类和DownloadManager.Query 类了。

一、DownloadManager.Request类的成员和定义

Java代码DownloadManager.RequestaddRequestHeader(String header, String value)// 添加一个Http请求报头,对于这两个参数,Android开发网给大家举个小例子,比如说User-Agent值可以为Android123或 Windows XP等等了,主要是给服务器提供标识。

DownloadManager.RequestsetAllowedNetworkTypes(int flags)//设置允许使用的网络类型,这一步Android 2.3做的很好,目前有两种定义分别为NETWORK_MOBILE和NETWORK_WIFI我们可以选择使用移动网络或Wifi方式来下载。

DownloadManager.RequestsetAllowedOverRoaming(boolean allowed)//对于下载,考虑到流量费用,这里是否允许使用漫游。

DownloadManager.RequestsetDescription(CharSequence description)//设置一个描述信息,主要是最终显示的notification提示,可以随便写个自己区别

DownloadManager.RequestsetDestinationInExternalFilesDir(Context context, String dirType, String subPath)//设置目标存储在外部目录,一般位置可以用 getExternalFilesDir()方法获龋

DownloadManager.RequestsetDestinationInExternalPublicDir(String dirType, String subPath)//设置外部存储的公共目录,一般通过getExternalStoragePublicDirectory()方法获龋

DownloadManager.RequestsetDestinationUri(Uri uri)//设置需要下载目标的Uri,可以是http、ftp等等了。

DownloadManager.RequestsetMimeType(String mimeType)//设置mime类型,这里看服务器配置,一般国家化的都为utf-8编码。

DownloadManager.RequestsetShowRunningNotification(boolean show)//是否显示下载进度的提示

DownloadManager.RequestsetTitle(CharSequence title)//设置notification的标题

DownloadManager.RequestsetVisibleInDownloadsUi(boolean isVisible)//设置下载管理类在处理过程中的界面是否显示

当然了Google还提供了一个简单的方法来实例化本类,这个构造方法为DownloadManager.Request(Uri uri) ,我们直接填写一个Uri即可,上面的设置使用默认情况。

二、DownloadManager.Query类

对于当前下载内容的状态,我们可以使用DownloadManager.Query类来获取,本类比较简单,仅仅提供了两个方法。

Java代码DownloadManager.QuerysetFilterById(long... ids)//根据id来过滤查找。

DownloadManager.QuerysetFilterByStatus(int flags) //根据任务的状态来查找。

详细的状态在android.app.DownloadManager类中有定义,目前Android 2.3中的定义为:

Java代码int STATUS_FAILED 失败

int STATUS_PAUSED 暂停

int STATUS_PENDING 等待将开始

int STATUS_RUNNING 正在处理中

int STATUS_SUCCESSFUL 已经下载成功

最后Android开发网提醒大家要说的是因为DownloadManager类提供的query方法返回一个Cursor对象,这些状态保存在这个游标的COLUMN_STATUS 字段中。

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...