您的位置:首页 > 其它

安卓开发入门之系统下载管理工具DownloadManager-第三部分(翻译)

2017-06-24 21:59 495 查看
原文链接

https://blog.stylingandroid.com/downloadmanager-part-3/

安卓开发入门之系统下载管理工具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 的主要内容,另外还有一个重要的知识点就是其在设备上的UI表现。我们都知道下载时系统通知栏会显示下载信息,除此之外还有下载管理app,通过此app,用户能够管理下载的内容。该app的尤其重要,因为当我们的app将下载内容存放在我们自己的数据区域以外并且用户卸载掉我们的app后,这些下载内容不会被自动删除。如果我们使用DownloadManager下载文件,下载内容会自动显示在下载管理app。正如下图所示:



然而,当我们使用独立下载时,我们仍然能够通过DownloadManager的addCompletedDownload()方法将下载内容添加到下载管理app。该方法有两个参数,第一个参数从API12开始引入,第二个参数(API24引入)包含下载内容中URI属性和HTTP中URI。但是注意,要想此方法生效,我们必须将下载内容存储在public区域,而不能存储在app私有区域。

在第一篇文章《安卓开发入门之系统下载管理工具DownloadManager-第一部分 》中阐述了下载完成后,我们可以通过DownloadManager 获取下载内容的属性信息,比如说MIME type。当然还有许多其他的属性,比如下载状态和内容的大小。

第一篇文章也展示了通过getUriForDownloadedFile()方法获取URI,和MIME type一起调用外部的PDF阅读器。这让我们意识到,下载内容被存储在我们app的私有数据区域和拥有下载内容schema的URI,我们通过DownloadManager创建ContentProvider 将URI暴露给外部app。

将下载内容存储在合适的位置是个值得思考的问题。由于不同app有不同的实际需求,所以没有唯一的正确答案。

假如下载内容比较小,并且只被我们的app自己使用,存储在私有数据区域比较合适。

对于比较大的下载内容,并且只被我们的app自己使用,存储在存储卡的私有数据区域比较合适(此操作不需要WRITE_EXTERNAL_STORAGE 权限)。通过方法setDestinationInExternalFilesDir()。

最后如果下载内容需要具备public属性(比如说媒体扫描器扫描后将图片显示在系统相册),存储在存储卡的public区域比较合适(此操作需要WRITE_EXTERNAL_STORAGE 权限)。通过方法setDestinationInExternalPublicDir()。

源码下载

https://github.com/StylingAndroid/DownloadManager/tree/Part3

原文链接

https://blog.stylingandroid.com/downloadmanager-part-3/

安卓开发入门之系统下载管理工具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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: