2013-06-14 17 views
8

DownloadManager kullanan android uygulaması yapıyorum. Dosyayı yaptığım klasöre indirmek istiyorum. Ancak bu kaynaklar çalışmıyor. Ve IllegalstateException olur. Ne yapabilirim?Android DownloadManager illegalalstateexception dizini oluşturamadı

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

cevap

10

Ne yapabilirim?

Eğer the documentation for setDestinationInExternalPublicDir() okursanız, ilk parametre "dizin türü to pass to getExternalStoragePublicDirectory(String)" olduğunu göreceksiniz. Bu, Environment.DIRECTORY_DOWNLOADS gibi Environment sınıfında tanımlanan sabitlerden biri olmalıdır. Desteklenmeyen başka bir şey geçiriyorsunuz.

+4

Uygulamamın özel klasörüne indirilmiş bir dosya indirmek istiyorsam ne yapmalıyım? Dosyayı, Ortam sınıfı tarafından tanımlanan sabit bir klasörde indirip sonra da dosyayı kes/yapıştır? Herhangi bir fikir? –

+0

@AliBehzadianNejad seni doğru anladıysam, bunu şu şekilde yaptım: request.setDestinationInExternalPublicDir (Environment.DIRECTORY_DOWNLOADS, File.separator + folderName + File.separator + dosyaadı); –

5

Eğer bir emülatör kullanıyorsanız, ayrıca manifest.xml

yılında

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

olduğundan emin olun SD kart depolama ile oluşturulduğu emin olun. Varsayılan olarak oluşturulmamıştır.