安卓开发入门之系统下载管理工具DownloadManager-第二部分(翻译)
来源:互联网 发布:qq音乐 for ubuntu 编辑:程序博客网 时间:2024/06/05 02:02
原文链接
https://blog.stylingandroid.com/downloadmanager-part-2/
安卓开发入门之系统下载管理工具DownloadManager-第一部分
http://blog.csdn.net/zhangxiangliang2/article/details/73691449
安卓开发入门之系统下载管理工具DownloadManager-第二部分
http://blog.csdn.net/zhangxiangliang2/article/details/73693134
安卓开发入门之系统下载管理工具DownloadManager-第三部分
http://blog.csdn.net/zhangxiangliang2/article/details/73695167
在上文《安卓开发入门之系统下载管理工具DownloadManager-第一部分》中,展示了使用DownloadManager来下载文件的详细过程。然而,还有许多细节值得我们去探索,本文将一 一展开。
我们首先看看系统通知栏的内容,它包括文件名和剩余时间。
这是默认的通知栏,好看不?我也不知道,如果我们需要自定义通知栏,下面内容可看好了。
设置何时显示通知栏:在我们将DownloadManager.Request对象放入DownloadManager队列时调用setNotificationVisibility()方法(API11,API9调用setShowRunningNotification())。
如果我们获取了DOWNLOAD_WITHOUT_NOTIFICATION 权限,有可能禁止弹出下载通知栏。
设置显示的文件名:DownloadManager.Request. setTitle()
设置显示的描述内容:DownloadManager.Request.setDescription()
代码如下:
void download(Uri uri) { if (!isDownloading()) { register(); DownloadManager.Request request = new DownloadManager.Request(uri); request.setTitle("My hovercraft is full of eels"); request.setDescription("I am no longer infected"); downloadId = downloadManager.enqueue(request); } }
个人建议,最好不要设置描述内容,因为这会覆盖掉剩余时间的显示,后者往往更有价值。看看覆盖后的效果:
如果服务端需要指定的HTTP头,比如说SessionID,只需设置 DownloadManager.Request的addRequestHeader()方法。
如果下载的数据太大可能会影响用户设备的内存空间。DownloadManager.Request 的许多方法能够限制下载大小。默认设置是无限制,所以我们最好设置一个下载上限。
DownloadManager.Request的setAllowedOverRoaming()限制漫游下载。
DownloadManager.Request的setAllowedNetworkTypes()(API16以后调用setAllowedOverMetered())过滤掉特殊类型的网络。
设置下载的时候内容是否对操作系统可见。
将request放入队列之前调用DownloadManager.Request的allowScanningByMediaScanner()设置允许系统媒体扫描下载的内容。比如说,如果我们进行了该项设置,当我们下载完成一张图片以后并且媒体扫描器扫描之后,该图片会出现在系统相册里。
DownloadManager.Request的setVisibleInDownloadsUi()方法设置了下载内容和状态是否对系统自带的下载app可见。
最后,我们能够设置下载文件存到设备中的地方。默认下载存放到分配给我们app私有(正如我们上一篇文章中看到的尽管能够分享到其他app)的系统区域。这有一点不好就是当系统释放内存空间的会被系统删掉,为了避免被删掉可以调用setDestinationInExternalFilesDir(),该方法将下载内容存储到存储卡上属于我们app的私有区域,因为该区域对媒体扫描器不可见的。如果想设置下载的内容对媒体扫描器可见,调用setDestinationInExternalPublicDir()替代setDestinationInExternalFilesDir()方法,该方法将下载内容保存到存储卡的public区域。然而,将下载内容存储在存储卡的public区域(适用于系统的所有app)对于分享到其他app这点有影响。这点我们将在下一篇文章中讨论。
我们能对每一次下载进行设置,但是,我们仍然能够将一些通用的设置应用到所有的下载,我们将在下一篇文章中讨论。
源码下载
https://github.com/StylingAndroid/DownloadManager/tree/Part2
原文链接
https://blog.stylingandroid.com/downloadmanager-part-2/
安卓开发入门之系统下载管理工具DownloadManager-第一部分
http://blog.csdn.net/zhangxiangliang2/article/details/73691449
安卓开发入门之系统下载管理工具DownloadManager-第二部分
http://blog.csdn.net/zhangxiangliang2/article/details/73693134
安卓开发入门之系统下载管理工具DownloadManager-第三部分
http://blog.csdn.net/zhangxiangliang2/article/details/73695167
- 安卓开发入门之系统下载管理工具DownloadManager-第二部分(翻译)
- 安卓开发入门之系统下载管理工具DownloadManager-第一部分(翻译)
- 安卓开发入门之系统下载管理工具DownloadManager-第三部分(翻译)
- 安卓开发实战之app之版本更新升级(DownloadManager和http下载)完整实现
- 安卓开发实战之app之版本更新(DownloadManager和http下载)完整实现
- 安卓开发之非常好用的AndroidOne框架DownloadManager
- 安卓开发入门之自定义View(翻译)
- 安卓开发入门之底部导航BottomNavigationView(翻译)
- 安卓开发入门之图片缩放(翻译)
- 安卓开发入门之自动补全文本(翻译)
- 安卓开发入门之自定义字体(翻译)
- 系统服务之下载管理(DownloadManager)
- Android系统下载DownloadManager
- 【安卓新人】 官网项目开发说明部分翻译
- 【安卓新人】 官网项目开发说明部分翻译
- jBPM4工作流开发实战 之 第二部分 jBPM4开发入门
- jBPM4工作流开发实战 之 第二部分 jBPM4开发入门
- 安卓开发入门之小部件Widgets(翻译)附源码
- alphalens教程1--整理好你的数据
- 64位Mex文件在Matlab 2014b和Visual Studio 2013中的调试
- static方法能否被重写
- bootstrap中datetimepicker日期控件的使用
- MyBatis学习总结(五)——实现关联表查询
- 安卓开发入门之系统下载管理工具DownloadManager-第二部分(翻译)
- MDK分散加载脚本
- MyBatis学习总结(六)——调用存储过程
- Laravel中数据迁移执行php artisan migrate 报错问题
- compare apache lib-simulate grep -search A.txt lib in B.txt
- MyBatis学习总结(七)——Mybatis缓存
- Java环境简单配置+IDEA(小白版)
- gulp、MockJs、NodeJs、Mustache脱离后台环境,只通过模拟数据运行项目
- MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合