Недопустимое исключение Android DownloadManager не может создать каталог

Я делаю приложение для Android, которое использует DownloadManager. Я хочу загрузить файл в папку, которую я сделал. Но эти источники не работают. И бывает IllegalstateException. Что я могу сделать??

urlToDownload = Uri.parse(URL);
List<String> pathSegments = urlToDownload.getPathSegments();
request = new DownloadManager.Request(urlToDownload);
request.setTitle(Titlename);
request.setDescription("MCPE STORE");
request.setDestinationInExternalPublicDir(
                   Environment.getExternalStorageDirectory().getAbsolutePath() + 
                   "/MCPE STORE", pathSegments.get(pathSegments.size()-1));

Environment.getExternalStoragePublicDirectory(
                   Environment.getExternalStorageDirectory().getAbsolutePath() + 
                   "/MCPE STORE").mkdir();
latestId = downloadManager.enqueue(request);

person user2486655    schedule 14.06.2013    source источник


Ответы (2)


Что я могу сделать?

Если вы прочитали в документации для setDestinationInExternalPublicDir() вы увидите, что первый параметр - это "тип каталога для передачи getExternalStoragePublicDirectory(String)". Это должна быть одна из констант, определенных в классе Environment, например Environment.DIRECTORY_DOWNLOADS. Вы передаете что-то еще, что не поддерживается.

person CommonsWare    schedule 14.06.2013
comment
Что мне делать, если я хочу, чтобы загруженный файл находился в специальной папке моего приложения? Просто загрузить файл в постоянную папку, определенную классом Environment, а затем вырезать/вставить файл? Есть идеи? - person Ali Behzadian Nejad; 18.12.2013
comment
@AliBehzadianNejad, если я правильно понял, я сделал это так: request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, File.separator + folderName + File.separator + filename); - person Levon Petrosyan; 27.10.2017

Убедитесь, что у вас есть

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

в твоем manifest.xml

Кроме того, если вы используете эмулятор, убедитесь, что вы создали его с помощью SD-карты. Он НЕ создается по умолчанию.

person Ken Wolf    schedule 14.06.2013