2016-03-25 30 views
0

Depolama alanına indirilmiş bir dosya yazmaya çalışıyorum ama alıyorum ve hata yapıyorum. İşte benim kod -Dizin Oluşturulamadı

request.setDestinationInExternalPublicDir("/songs", "name-of-the-file.mp3"); 

Günlüğü -

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
StrictMode.setThreadPolicy(policy); 
// To work and download on main thread 

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(downl)); 
request.setDestinationInExternalPublicDir("/songs", "name-of-the-file.mp3"); 

DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); 
    manager.enqueue(request); 

Zaten eklemiş aşağıdaki izinleri - -

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

Kayıt için
03-25 12:40:47.230 10480-10480/com.xxxx.ytm.yyyy E/AndroidRuntime: FATAL EXCEPTION: main 

Process: com.xxxx.ytm.yyyy, PID: 10480 
java.lang.IllegalStateException: Unable to create directory: /storage/emulated/0/songs 

    at android.app.DownloadManager$Request.setDestinationInExternalPublicDir(DownloadManager.java:538) 
    at com.antimatter.ytm.youtubemp3.MainActivity$1.onClick(MainActivity.java:84) 
    at android.view.View.performClick(View.java:5198) 
    at android.view.View$PerformClick.run(View.java:21147) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5417) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

, burada kodun kalan var

+0

Bu uygulamayı çalıştırıyor musunuz aşağıdaki linki deneyin doesnt eğer – JoxTraex

+0

Evet 6.0 x86_64 ile –

+0

Lütfen "setDestinationInExternalPublicDir()" kodunu gösterelim, ne yaptığınızı görebiliyoruz. – greenapps

cevap

1

Çoğunlukla c Ya SD kartına yazma izniniz yoksa, SD kart yok veya siz doğru erişmiyorsunuz. önce bir SD kartınızın olduğundan emin olun. ikinci olarak depolamanın yolu farklı üreticilere göre değişir, bu yüzden kod yazmayın.

Dizin yolu oluşturmak için aşağıdakileri deneyin: Dize fullpath = pathtofile +”tanımlı dizin yolu" Yukarıdaki

çalışmalıdır.

o zaman? 6.0

`/storage/emulated/legacy/` vs `/storage/emulated/0/` vs `data/data/myApp'

+0

'SD karta yazma izniniz yok. OP, SD karta değil, harici belleğe yazıyormuş gibi görünüyor. Ve DownloadManager harici yolu yapar. – greenapps

+0

Ayrıca, “Environment.getExternalStorageDirectory()” harici belleğe bir yol sunar. SD karta değil. – greenapps

İlgili konular