【发布时间】:2016-05-14 13:23:40
【问题描述】:
我的应用使用 DownloadManager 将文件下载到设备音乐文件夹的子目录中。
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
...
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) + "/MyStuff/song.mp3");
request.setDestinationUri(Uri.fromFile(file));
我注意到,当从运行 Marshmallow 的设备上卸载应用程序时,这些文件会被删除(旧操作系统版本不会发生这种情况)。 您对此有什么想法吗?
谢谢
【问题讨论】:
-
我可以重现这种行为。我对他们这样做并不感到非常震惊,但这确实感觉像是一种倒退。
-
请注意,Android 5.1(在 Nexus 4 上测试)会发生相同的行为,但在 Android 4.1(在 Galaxy Nexus 上测试)则不会,因此变化发生在该范围内。它对 Android 6.0 来说并不是严格意义上的新功能。根据模拟器测试,Android 5.0 似乎发生了变化——4.4 保留下载,5.0 没有。
-
这种情况只发生在下载的文件上,还是应用程序放置在某个公共文件夹中的所有文件上?如果仅用于下载的文件,那么快速复制会缓解这种情况,是吗?
-
@323go 仅适用于下载的文件。但我想知道它是否也适用于带有
addCompletedDownload()的文件。 -
@323go 它似乎只发生在下载的文件中。我已经实现了文件复制作为解决此错误的方法:请注意,复制的文件需要具有不同的文件名,交换将不起作用。
标签: android android-6.0-marshmallow download-manager android-external-storage