2013-06-14 6 views
8

Sto creando un'app per Android che utilizza DownloadManager. Voglio scaricare il file nella cartella che ho creato. Ma queste fonti non funzionano. E succede IllegalstateException. Cosa posso fare ??Android DownloadManager illegalstateexception Impossibile creare la directory

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

risposta

10

Cosa posso fare?

Se leggete the documentation for setDestinationInExternalPublicDir(), si vedrà che il primo parametro è "il tipo di directory to pass to getExternalStoragePublicDirectory(String)". Deve essere una delle costanti definite nella classe Environment, ad esempio Environment.DIRECTORY_DOWNLOADS. Stai passando qualcos'altro, che non è supportato.

+4

Cosa devo fare se voglio scaricare il file nella cartella speciale della mia app? Basta scaricare il file in una cartella costante definita dalla classe Environment e quindi tagliare/incollare il file? qualche idea? –

+0

@AliBehzadianNejad se ti ho capito bene, l'ho fatto così: request.setDestinationInExternalPublicDir (Environment.DIRECTORY_DOWNLOADS, File.separator + folderName + File.separator + filename); –

5

Assicurarsi di avere

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

nel vostro manifest.xml

anche se si utilizza un emulatore, assicurarsi che si è creato con scheda di memoria SD. NON è stato creato per impostazione predefinita.