DownloadManager的使用
Posted 小阿仙的fans
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DownloadManager的使用相关的知识,希望对你有一定的参考价值。
本文转自 http://www.cnblogs.com/zhaoyanjun/p/4591960.html,在此感谢作者
一、基本概念
1、DownloadManager是android 2.3A (API level 9) 引入的,基于http协议,用于处理长时间下载。
2、DownloadManager对于断点续传功能支持很好 。
二、权限设置(由于下载会需要SD卡存储,所以需要SD卡文件读写权限)
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
三、request.setNotificationVisibility 可以用来控制什么时候显示Notification,甚至是隐藏该request的Notification 。
(1)Request.VISIBILITY_VISIBLE
在下载进行的过程中,通知栏中会一直显示该下载的Notification,当下载完成时,该Notification会被移除,这是默认的参数值。
(2)Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED
在下载过程中通知栏会一直显示该下载的Notification,在下载完成后该Notification会继续显示,直到用户点击该Notification或者消除该Notification。
(3)Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION
只有在下载完成后该Notification才会被显示。
(4)Request.VISIBILITY_HIDDEN
不显示该下载请求的Notification。如果要使用这个参数,需要在应用的清单文件中加上DOWNLOAD_WITHOUT_NOTIFICATION权限。
相对应的代码
//设置状态栏中显示Notification
//设置Notification的标题
request.setTitle( "微信下载" ) ;
request.setDescription( "5.3.6" ) ;
request.setNotificationVisibility( Request.VISIBILITY_VISIBLE ) ;
request.setNotificationVisibility( Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED ) ;
request.setNotificationVisibility( Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION ) ;
request.setNotificationVisibility( Request.VISIBILITY_HIDDEN ) ;
四:下载的文件,存放路径
/**
* 设置下载文件存储目录
*/
void setDownloadFilePath( Request request ){
/**
* 方法1:
* 目录: Android -> data -> com.app -> files -> Download -> 微信.apk
* 这个文件是你的应用所专用的,软件卸载后,下载的文件将随着卸载全部被删除
*/
//request.setDestinationInExternalFilesDir( this , Environment.DIRECTORY_DOWNLOADS , "微信.apk" );
/**
* 方法2:
* 下载的文件存放地址 SD卡 download文件夹,pp.jpg
* 软件卸载后,下载的文件会保留
*/
//在SD卡上创建一个文件夹
//request.setDestinationInExternalPublicDir( "/mydownfile/" , "weixin.apk" ) ;
/**
* 方法3:
* 如果下载的文件希望被其他的应用共享
* 特别是那些你下载下来希望被Media Scanner扫描到的文件(比如音乐文件)
*/
//request.setDestinationInExternalPublicDir( Environment.DIRECTORY_MUSIC, "笨小孩.mp3" );
/**
* 方法4
* 文件将存放在外部存储的确实download文件内,如果无此文件夹,创建之,如果有,下面将返回false。
* 系统有个下载文件夹,比如小米手机系统下载文件夹 SD卡--> Download文件夹
*/
//创建目录
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).mkdir() ;
//设置文件存放路径
request.setDestinationInExternalPublicDir( Environment.DIRECTORY_DOWNLOADS , "weixin.apk" ) ;
}
一、基本概念
1、DownloadManager是Android 2.3A (API level 9) 引入的,基于http协议,用于处理长时间下载。
2、DownloadManager对于断点续传功能支持很好 。
二、权限设置(由于下载会需要SD卡存储,所以需要SD卡文件读写权限)
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
三、request.setNotificationVisibility 可以用来控制什么时候显示Notification,甚至是隐藏该request的Notification 。
(1)Request.VISIBILITY_VISIBLE
在下载进行的过程中,通知栏中会一直显示该下载的Notification,当下载完成时,该Notification会被移除,这是默认的参数值。
(2)Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED
在下载过程中通知栏会一直显示该下载的Notification,在下载完成后该Notification会继续显示,直到用户点击该Notification或者消除该Notification。
(3)Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION
只有在下载完成后该Notification才会被显示。
(4)Request.VISIBILITY_HIDDEN
不显示该下载请求的Notification。如果要使用这个参数,需要在应用的清单文件中加上DOWNLOAD_WITHOUT_NOTIFICATION权限。
相对应的代码
//设置状态栏中显示Notification
//设置Notification的标题
request.setTitle( "微信下载" ) ;
request.setDescription( "5.3.6" ) ;
request.setNotificationVisibility( Request.VISIBILITY_VISIBLE ) ;
request.setNotificationVisibility( Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED ) ;
request.setNotificationVisibility( Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION ) ;
request.setNotificationVisibility( Request.VISIBILITY_HIDDEN ) ;
四:下载的文件,存放路径
/**
* 设置下载文件存储目录
*/
void setDownloadFilePath( Request request ){
/**
* 方法1:
* 目录: Android -> data -> com.app -> files -> Download -> 微信.apk
* 这个文件是你的应用所专用的,软件卸载后,下载的文件将随着卸载全部被删除
*/
//request.setDestinationInExternalFilesDir( this , Environment.DIRECTORY_DOWNLOADS , "微信.apk" );
/**
* 方法2:
* 下载的文件存放地址 SD卡 download文件夹,pp.jpg
* 软件卸载后,下载的文件会保留
*/
//在SD卡上创建一个文件夹
//request.setDestinationInExternalPublicDir( "/mydownfile/" , "weixin.apk" ) ;
/**
* 方法3:
* 如果下载的文件希望被其他的应用共享
* 特别是那些你下载下来希望被Media Scanner扫描到的文件(比如音乐文件)
*/
//request.setDestinationInExternalPublicDir( Environment.DIRECTORY_MUSIC, "笨小孩.mp3" );
/**
* 方法4
* 文件将存放在外部存储的确实download文件内,如果无此文件夹,创建之,如果有,下面将返回false。
* 系统有个下载文件夹,比如小米手机系统下载文件夹 SD卡--> Download文件夹
*/
//创建目录
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).mkdir() ;
//设置文件存放路径
request.setDestinationInExternalPublicDir( Environment.DIRECTORY_DOWNLOADS , "weixin.apk" ) ;
}
以上是关于DownloadManager的使用的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 DownloadManager 将下载的文件存储到应用程序分配的文件目录中?
使用 DownloadManager 从 S3 下载 apk 文件