11

我正在使用 DownloadManager 将文件下载到我的 Android 设备。我可以选择使用以下方式下载到 DCIM、Downloads、Pictures 文件夹等:

downloadRequest.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "file.jpg");

这行得通。但我只能选择一组有限的文件夹来下载。我想使用 /sdcard/ 下载到我的 sdcard 的根目录

我试过了:

downloadRequest.setDestinationUri(Uri.fromFile(new File("/sdcard/file.jpg")));

但这会导致以下异常:

IllegalStateException: android 无效的目的地组合:4,路径:/sdcard/file.jpg

我怎样才能做到这一点?我设置了所有必需的权限。

4

4 回答 4

27

像这样试试。

downloadRequest.setDestinationInExternalPublicDir("/folderName",file.jpg);

这将在您的外部存储根目录中创建一个文件夹并将 file.jpg 放入其中。

于 2012-10-19T10:22:58.943 回答
2

通过使用修复它

request.setDestinationInExternalPublicDir( "/APP_NAME/", FileNameGetter.getFileName(DATA..url) );
于 2013-07-13T06:32:26.740 回答
1

根据官方文档,您应该只使用以下任一变体,使用可用Environment.DIRECTORY_*常量之一:

myRequest.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "my_sub_folder/my_file.txt");

目录类型(即第一个参数)可能不是null或者

myRequest.setDestinationInExternalFilesDir(myContext, null, "my_sub_folder/my_file.txt");
// or
// myRequest.setDestinationInExternalFilesDir(myContext, Environment.DIRECTORY_PICTURES, "my_sub_folder/my_picture.jpg");

其中目录类型(即第二个参数)可能null.

在任何情况下,在最后一个参数中指定(子)文件夹是可选的。

于 2017-07-04T16:07:07.970 回答
0

Not one of standard directories: /folderName. 为了setDestinationInExtrnalPublicDir()工作,给定的路径必须是标准目录之一,如音乐、下载等......

于 2022-02-03T14:18:12.237 回答