DownloadManager

原创 2015年11月19日 11:57:31

DownloadManager主要用来进行长时间http下载,是个系统后台服务。连接出错了能自己重连,重启了也能继续连。

1.得到DownloadManager

DownloadManager dm = (DownloadManager)getSystemService( DOWNLOAD_SERVICE).


2.得到连接请求对象

DownloadManager.Request   down=new DownloadManager.Request (Uri.parse("http://10.0.11.210:8080/test/我的歌声里.mp3"));


3.对请求设置参数(常用的)与开始下载

//设置允许使用的网络类型,移动网络与wifi都可以
down.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE|DownloadManager.Request.NETWORK_WIFI);

//显示在下载界面,即下载后的文件在下载管理里显示
down.setVisibleInDownloadsUi(true);

//设置下载后文件存放的位置,不设置会存在data/data/com.android.provider.downloads/cache/下面,设置后存在sd上的Android/data/<包名>/files/下面。第2个参数是files下再建目录的目录名,第3个参数是文件名,如果第3个参数带路径,要确保路径存在,第2个参数路径随便写,会自己创建 down.setDestinationInExternalFilesDir(mContext, Environment.DIRECTORY_MUSIC, "我的歌声里.mp3"); 

//在通知栏显示下载详情,比如百分比。       
 down.setShowRunningNotification(true)(API 9); //默认是true,改为false需要权限android.permission.DOWNLOAD_WITHOUT_NOTIFICATION。

此方法被setNotificationVisibility(int visibility)(API  11)取代。

//以sd卡路径为根路径,与上方法只有一个有效。第一个参数创建文件夹用的是mkdir
                down.setDestinationInExternalPublicDir(Environment.DIRECTORY_MUSIC, "我的歌声里.mp3");

//将下载请求放入队列
                manager.enqueue(down);

// 下载完成后保留 下载的notification。文档上写明参数需要API 12以上。4.0的手机开始。

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. down.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);  

4.接收下载完成信息

广播接收下载完成信息,Action为DownloadManager.ACTION_DOWNLOAD_COMPLETE。

能得到下载完成的文件存在数据库中的ID:long downId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);

getUriForDownloadedFile(long id)能得到文件存储的URI。

也可以通过new一个DownloadManager.Query再setFilterById(long... ids),接着用DownloadManager的query(DownloadManager.Query query)来得到Cursor对象

5.remove(long... ids)

取消正在下载的任务或者删除下载了一部分或者全部的文件,删除对应的数据记录。

6.id怎么获取

可以监听数据库文件/data/data/com.android.provider.downloads/database/downloads.db。数据库有专门的监听类。也可以用文件监听类FileObsever监测文件变化。

得到变化的数据行。数据库里的数据并不是在下载完后才插入的,而是下载时通知栏上百分比每变化一次就更新一次。

下载百分比也是这么获取,数据库里有两个字段其中current_bytes是当前下载bit数,在等于total_bytes之前是更新的。


7.点击正在下载的notification将会受到Action为DownloadManager.ACTION_NOTIFICATION_CLICKED的广播。


下载示例代码:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. private void begainDownload() {  
  2.     DownloadManager dm = (DownloadManager)getSystemService( DOWNLOAD_SERVICE);  
  3.     DownloadManager.Request   down=new DownloadManager.Request (Uri.parse("http://10.0.11.210:8080/test/我的歌声里.mp3"));  
  4.     down.setVisibleInDownloadsUi(true);  
  5.     down.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_MUSIC, "我的歌声里.mp3");  
  6.     down.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);  
  7.     dm.enqueue(down);  
  8. }  
tomcat服务器提供资源。文件存在了/sdcard/Android/data/<包名>/files/Music/我的歌声里.mp3

权限:


[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <uses-permission android:name="android.permission.INTERNET"/>  
  2. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  

数据库查看工具(免安装):sqlite查看工具

版权声明:本文为博主原创文章,未经博主允许不得转载。

wordpress downloadmanager 插件

  • 2012年01月29日 12:29
  • 641KB
  • 下载

ANdroid如何实现网络重定向以及使用DownLoadManager类下载

1.功能脚本:

downloadmanager

  • 2013年08月19日 10:54
  • 888KB
  • 下载

android系统DownloadManager下载工具类

  • 2017年06月18日 10:59
  • 265KB
  • 下载

Android DownloadManager下载并自动弹出安装(转载)

转载自:http://www.cnblogs.com/qstext/p/4527929.html 1.版本2.3以上 2.              只能贴代码,本想...

downloadmanager

  • 2016年04月10日 18:37
  • 2.74MB
  • 下载

Android大数据、断点续传、耗时下载之DownloadManager开发简介(1)

 Android大数据、断点续传、耗时下载之DownloadManager开发简介(1) Android涉及到的网络数据请求,如果是零星数据、且数据量较小(几十KB到几百KB,1MB以内),一...

DownloadManager(强制升级与自选升级)

  • 2016年08月22日 14:51
  • 2.85MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DownloadManager
举报原因:
原因补充:

(最多只允许输入30个字)