- 浏览: 915512 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
天天来注册:
...
try catch finally 用法 -
tadpole_java:
谢谢你的分享。
二十七、Qt数据库(七)QSqlRelationalTableModel(转) -
359449749tan:
android之EditText文本监听(addTextChangedListener) -
michael_wang:
人过留名 多谢分享
Android NOtification 使用 -
wilsonchen:
wangqi0614 写道这个删除是删除所有的把?能不能值删除 ...
Android的SharedPreferences保存与删除数据简单实例
从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这些基础概念了解的话,可以看到这个下载管理类可以帮我们减少很多不必要的代码编写。
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这些基础概念了解的话,可以看到这个下载管理类可以帮我们减少很多不必要的代码编写。
发表评论
-
android push
2011-11-16 15:24 1607所有技术的概要介绍,并讲解了android2.2的新功能C2D ... -
[Android UI界面] 怎么设置popupwindow动画效果?
2011-07-16 12:34 1120http://www.eoeandroid.com/threa ... -
android解析XML
2011-07-11 11:32 1874为移动设备构建 Java 应用程序 Michael ... -
对话框和浮动Activity
2011-07-06 12:07 956在Android中,我们可以通 ... -
升级android sdk时A folder failed to be renamed or moved 错误的解决
2011-06-28 09:22 1701Downloading Android SDK Tools, ... -
android push机制-C2DM
2011-06-27 16:54 1535http://bigcat.easymorse.com/?p= ... -
XML解析
2011-06-24 15:45 854HttpPost httpRequest=new HttpP ... -
android上传图片到服务器,求服务器那边和android的Activity的完整代码。
2011-06-22 12:30 3253服务器端servlet代码:public void doPos ... -
android HTTP 通信, XML 解析, 通过 Hander 实现异步消息处理 (1)
2011-06-08 16:44 1029介绍 在 Android 中与服务端做 HTTP 通信,解析 ... -
eclipse 中android中文doc配置
2011-05-13 14:39 982http://hi.baidu.com/huangbz321/ ... -
jesson.shen浅谈HTTP中实现UDP/TCP
2011-05-10 16:38 938http://350526.blog.51cto.com/34 ... -
android 网络编程
2011-05-04 19:54 781http://hi.baidu.com/lfcaolibin/ ... -
android解析xml文件的方式
2011-05-01 22:54 890http://hi.baidu.com/%B2%BD%C2%C ... -
android进程间通信:使用AIDL
2011-04-13 10:59 873http://blog.csdn.net/saintsword ... -
Android实现开机自动运行程序
2011-04-12 18:00 1128有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内 ... -
android 如何从sqlite读取数据到spinner下拉中显示
2011-04-12 14:56 5585import android.app.Activity; im ... -
Android的SharedPreferences保存与删除数据简单实例
2011-04-12 11:37 520441、创建SharedPreferences对象: Stri ... -
Android使用LayoutInflater动态加载布局和操作控件
2011-04-11 16:22 1002http://www.cnmsdn.com/html/2010 ... -
dialog
2011-04-08 18:32 855http://topic.csdn.net/u/2011031 ... -
Android NOtification 使用
2011-04-07 15:55 3851一、 Notification 简介 ...
相关推荐
需要注意的是,使用DownloadManager下载文件时,需要在Android应用的Manifest文件中添加网络通信权限: ```xml ``` 最后,效果图展示了整个下载过程的执行,分为两个步骤:配置下载信息和执行下载任务。通过上述...
在Android应用开发中,有时我们需要实现一个功能,即使用系统内置的`DownloadManager`服务来下载APK文件,并在下载完成后自动提示用户进行安装。这个功能对于应用的更新或者安装外部资源非常实用。本文将详细讲解...
DownloadManager是Android 2.3(API Level 9)引入的一个系统服务,它允许应用程序启动持久性的文件下载操作。这些下载可以在前台或后台进行,并且可以在用户界面中显示状态。它自动处理网络重试、断点续传和通知...
Free Download Manager 插件是一款免费好用的非常好用的多功能下载管理工具,适用于 Chrome 浏览器,该插件支持使网页和软件联动,当用户在网页上进行下载时将直接转到 Free Download Manager 之中。下载 Free ...
在Android系统中,DownloadManager是一个系统级别的服务,用于在后台管理文件下载。它提供了一种安全、可靠且方便的方式来下载大文件,即使在设备重启或网络连接中断后也能继续下载。这个工具类允许开发者轻松地集成...
这个广播接收者主要工作是把DownloadManager下载的文件拷贝到U盘中以解决在TVBox开发过程中想要直接把文件下载到U盘时产生的java.lang.SecurityException异常。没分的朋友可以直接前往:...
对于应用程序,特别是涉及到下载管理和更新的,DownloadManager类扮演着核心角色。在"安卓SD卡文件管理更新信息相关-DownloadManager(强制升级与自选升级.rar"这个压缩包中,可能包含了关于如何利用DownloadManager...
`DownloadManager` 是 Android API Level 9(即Android 2.3 Gingerbread)引入的一个类,位于`android.app`包下。它为开发者提供了一个方便的接口来发起下载任务,并可以监控这些任务的状态。`DownloadManager`会...
Android系统自带了一个名为DownloadManager的服务,它为开发者提供了便捷的方式来管理和执行文件下载。本文将深入探讨Android DownloadManager以及如何自定义下载功能。 **Android DownloadManager** 1. **...
DownloadManager 是一个开源的下载框架,它为开发者提供了一种高效、灵活且可扩展的方式来管理应用程序中的文件下载任务。在Android开发中,特别是在处理大文件下载或者需要后台持续下载的场景下,DownloadManager是...
Neat Download Manager下载管理器为你提供良好的下载速度,整理你下载的文件,以及可以根据网络连接问题暂停和恢复下载的最佳部分。此外还允许多次下载。 Neat Download Manager是网络上最好的免费下载管理器之一。...
它具有良好的兼容性,从Android 2.3(API级别9)开始就已支持,并且能够在用户离开应用或者设备休眠时继续下载,确保下载过程的连续性。 首先,你需要在AndroidManifest.xml中添加Internet权限,这是所有网络操作的...
Scopus Document Download Manager 插件
在Android系统中,内置了一个强大的下载管理器——DownloadManager,它是Android SDK的一部分,允许开发者方便地实现后台下载任务,无需用户手动操作。本示例将详细介绍如何使用DownloadManager进行文件下载,并提供...
InternetDownloadManager 最新文件下载,最好用的下载工具。
本文将详细介绍如何利用`DownloadManager`来实现自动下载和安装APK文件,从而进行应用的更新。 `DownloadManager`是Android系统服务之一,它负责在后台下载文件,特别适合处理大文件,如APK更新包。这个服务具有...
创建下载请求是通过`DownloadManager.Request`类实现的。需要指定下载的URL、保存到本地的文件路径、请求的优先级、是否允许在移动网络下下载等参数。 3. **提交下载任务** 使用`DownloadManager.enqueue(Request...
在Android平台上,`DownloadManager`是一个系统服务,用于在后台管理大文件的下载任务,尤其适合在用户不直接交互的情况下进行。本示例将重点介绍如何利用`DownloadManager.Request`方法来实现文件下载,并在通知栏...
本文将详细介绍如何利用`DownloadManager`来实现Android应用的文件下载功能。 ### 1. 引入DownloadManager 首先,需要在AndroidManifest.xml中添加权限,允许应用程序进行网络访问和写入外部存储: ```xml ``` ...
DownloadManager是Android API Level 9(即Android 2.3 Gingerbread)引入的一个API,它提供了一个简单易用的接口,用于处理后台下载任务。用户可以通过BroadcastReceiver监听下载状态的变化,同时系统会自动处理...