DownloadManager:如果未安装sdcard,则下载到外部存储

时间:2017-04-21 19:20:20

标签: android android-context android-download-manager download-manager

我正在开发一款可以使用DownloadManager下载文件的应用。我使用以下方法将下载位置设置为外部存储:

setDestinationInExternalFilesDir(context, "temp_downloads", "filename");

我决定下载到外部存储的原因是因为某些文件很大(> 200 MB)。默认下载位置是共享下载缓存目录,如果我没有弄错并且downloading more than 200 MB will cause the download to fail,则其大小限制为200 MB。

问题是如果使用带有sdcard的设备的用户在使用应用程序时弹出sdcard,则下载将失败,因为setDestinationInExternalFilesDir方法会抛出IllegalStateException,如果未捕获该应用程序将导致应用程序崩溃。

没有sdcard插槽的设备没有问题,因为系统会生成模拟的外部存储,路径如下:/ storage / emulated /这个存储将始终可用。但是如果设备有sdcard插槽,外部存储路径将是/ storage / sdcard0 /,如果我尝试调用:

context.getExternalFilesDir(null);

虽然没有安装SD卡,但它将返回null。

这是否意味着DownloadManager不适用于使用弹出的SD卡下载设备上的大文件?或者有没有解决这个问题?

我不是在寻找使用直接下载到内部存储或不使用DownloadManager的第三方库的解决方案,因为使用DownloadManager是必需的。

0 个答案:

没有答案