注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

创新改变世界

you changed the world

 
 
 

日志

 
 

android基础--DownloadManager  

2013-10-05 17:28:19|  分类: android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

DownloadManager作为一项服务用来处理Http连接, 监视连接的状态, 以及确保在程序重启时仍能下载成功. 总而言之, DownloadManager使我们的下载操作更方便了.

下面给出一小段使用DownloadManager的代码:

  1. String serviceString = Context.DOWNLOAD_SERVICE;  
  2. DownloadManager downloadManager;  
  3. downloadManager = (DownloadManager)getSystemService(serviceString);  
  4. Uri uri = Uri.parse(“http://ishare.iask.sina.com.cn/f/16732631.html”);  
  5. DownloadManager.Request request = new Request(uri);  
  6. long reference = downloadManager.enqueue(request);  
要使用DownloadManager首先需要使用getSystemService获得DOWNLOAD_SERVICE服务.

DownloadManager.Request是DownloadManager的内置类, 包含了下载文件所需要的所有信息.

enqueue作用就是把request放入下载队列, 就是正式开始下载文件咯.


我们还可以使用DownloadManager的setAllowedNetworkTypes和setAllowedOverRoaming等方法来限制我们的下载环境. 

如request.setAllowedNetworkTypes(Request.NETWORK_WIFI); 限制在有WIFI的时候才下载, 可以节省我们那少得可怜的流量.


如果需要在完成下载之后执行某些动作, 可以参考以下小段代码:

  1. IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);  
  2. BroadcastReceiver receiver = new BroadcastReceiver() {  
  3. @Override  
  4. public void onReceive(Context context, Intent intent) {  
  5. //EXTRA_DOWNLOAD_ID指向已下载文件的ID  
  6. long reference = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);  
  7. if (myDownloadReference == reference) {  
  8. // Do something with downloaded file.  
  9. }  
  10. }  
  11. };  
  12. registerReceiver(receiver, filter);  
当下载完成时, 会发出一个action为DownloadManager.ACTION_DOWNLOAD_COMPLETE的广播.  我们要获得这个信息, 当然就要注册一个BroadcastReceiver咯.


开始下载文件之后, Notificatoin会显示下载进度, 如下所示.


如果你想在用户点击这个Item的时候执行某些操作, 可以参考以下代码:

  1. IntentFilter filter = new IntentFilter(DownloadManager.ACTION_NOTIFICATION_CLICKED);  
  2. BroadcastReceiver receiver = new BroadcastReceiver() {  
  3. @Override  
  4. public void onReceive(Context context, Intent intent) {  
  5. String extraID = DownloadManager.EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS;  
  6. //保存用户选择的多个Download的ID  
  7. long[] references = intent.getLongArrayExtra(extraID);  
  8. for (long reference : references)  
  9. if (reference == myDownloadReference) {  
  10. // Do something with downloading file.  
  11. }  
  12. }  
  13. };  
  14. registerReceiver(receiver, filter  
这里和上面一样, 也是使用BroadcastReceiver接收广播.


DownloadManager.Request中有一些定制Download Manager Notifications的函数

如上述代码中使用request.setTitle(“Earthquakes”)和request.setDescription(“Earthquake XML”)可以获得如下效果


其他的函数就不介绍了, 有兴趣的可以直接查看DownloadManager.Request的api文档

  评论这张
 
阅读(207)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017