2013-06-14 23 views
8

Robię aplikację dla systemu Android, która korzysta z DownloadManager. Chcę pobrać plik do folderu, który zrobiłem. Ale te źródła nie działają. I zdarzają się IllegalstateException. Co mogę zrobić?Android DownloadManager illegalstateexception nie można utworzyć katalogu

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

Odpowiedz

10

Co mogę zrobić?

Jeśli czytasz the documentation for setDestinationInExternalPublicDir(), widać, że pierwszy parametr jest „rodzaj katalogu to pass to getExternalStoragePublicDirectory(String)”. Musi to być jedna ze stałych zdefiniowanych w klasie Environment, na przykład Environment.DIRECTORY_DOWNLOADS. Przekazujesz coś innego, co nie jest obsługiwane.

+4

Co należy zrobić, jeśli chcę mieć pobrany plik w specjalnym folderze aplikacji? Wystarczy pobrać plik w stałym folderze zdefiniowanym przez klasę Środowisko, a następnie wyciąć/wkleić plik? dowolny pomysł? –

+0

@AliBehzadianNejad Jeśli mam ci rację, zrobiłem to tak: request.setDestinationInEternalWorldPublicDir (Environment.DIRECTORY_DOWNLOADS, File.separator + folderName + File.separator + nazwa pliku); –

5

Sprawdź, czy masz

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

w swojej manifest.xml

Także jeśli używasz emulatora, upewnij się, że stworzył go z pamięci karty SD. NIE jest domyślnie tworzony.

Powiązane problemy