Ответ 1
Попробуйте это.
downloadRequest.setDestinationInExternalPublicDir("/folderName",file.jpg);
Это создаст папку в вашем внешнем корневом хранилище и поместит файл file.jpg в нее.
Я использую DownloadManager для загрузки файла на свое Android-устройство. Я могу выбрать загрузку в папку DCIM, Downloads, Picutures и т.д., Используя:
downloadRequest.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "file.jpg");
Это работает. Но я могу выбрать только конечный набор папок для загрузки. Я хочу загрузить в корень моей SD-карты с помощью /sdcard/
Я пробовал:
downloadRequest.setDestinationUri(Uri.fromFile(new File("/sdcard/file.jpg")));
Но это делает следующее исключение:
IllegalStateException: android недействительная комбинация адресата: 4, путь:/sdcard/file.jpg
Как я могу это сделать? У меня есть все необходимые разрешения.
Попробуйте это.
downloadRequest.setDestinationInExternalPublicDir("/folderName",file.jpg);
Это создаст папку в вашем внешнем корневом хранилище и поместит файл file.jpg в нее.
Исправлено с помощью
request.setDestinationInExternalPublicDir( "/APP_NAME/", FileNameGetter.getFileName(DATA..url) );
Согласно официальной документации вы должны использовать только один из следующих вариантов, используя один из доступных 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
.
В любом случае указание (под) папки в последнем параметре является необязательным.