2013-06-14 6 views
8

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

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); 

ответ

10

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

Если вы читали the documentation for setDestinationInExternalPublicDir(), вы увидите, что первый параметр «тип каталога to pass to getExternalStoragePublicDirectory(String)». Это должно быть одной из констант, определенных на классе Environment, например Environment.DIRECTORY_DOWNLOADS. Вы передаете что-то еще, что не поддерживается.

+4

Что делать, если я хочу загрузить файл в специальную папку моего приложения? Просто загрузите файл в постоянную папку, определенную классом среды, а затем вырежьте/вставьте файл? Есть идеи? –

+0

@AliBehzadianNejad, если я прав, я сделал это так: request.setDestinationInExternalPublicDir (Environment.DIRECTORY_DOWNLOADS, File.separator + folderName + File.separator + filename); –

5

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

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

в вашем manifest.xml

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

Смежные вопросы