2017-02-24 2 views
0

Ich habe eine Async-Aufgabe gemacht, um den Download zu machen. Es sollte funktionieren, aber mein Problem ist wirklich am Anfang des Download-Prozesses, wenn ich versuche, die neue heruntergeladene Datei zu erstellen. Dies ist mein Code:Ich kann die Datei nicht schreiben, wenn ich versuche, sie mit meiner App herunterzuladen

 protected String doInBackground(String... strings) { 
     InputStream input = null; 
     OutputStream output = null; 
     HttpURLConnection connection = null; 

     try { 
      URL url = new URL("http://i.imgur.com/yLCSdue.png"); 
      connection = (HttpURLConnection) url.openConnection(); 
      connection.connect(); 

      if(connection.getResponseCode() != HttpURLConnection.HTTP_OK) 
      { 
       return "Server returned HTTP " + connection.getResponseCode() + " " + connection.getResponseMessage(); 
      } 

      int fileLength = connection.getContentLength(); 

      input = connection.getInputStream(); 
      Log.i("loc", "" + Environment.DIRECTORY_DOWNLOADS); 
      output = new FileOutputStream(Environment.getRootDirectory()+ "/" + Environment.DIRECTORY_DOWNLOADS + "/image.jpg"); 
      Log.i("download", "downloading"); 

Und wenn ich es laufen bekomme ich die Ausnahme:

W/System.err: java.io.FileNotFoundException: /system/Download/image.jpg (No such file or directory) 

Ich mag verschiedene Richtungen versucht:

   output = new FileOutputStream("image.jpg"); 

und ich habe diese Ausnahme:

W/System.err: java.io.FileNotFoundException: image.jpg (Read-only file system) 

Ich habe versucht, zu verwenden:

   output = new FileOutputStream("/storage/emulated/0/Download/image.jpg"); 

und bekam:

W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Download/image.jpg (Permission denied) 

Ich weiß nicht, was tun kann ich die Datei erstellen und darauf schreiben .. ich fanden keine Erlaubnis im Manifest, die mir dabei helfen kann .. Ich möchte in den internen Speicher im Verzeichnis "Downloads" schreiben.

Antwort

1

diese Berechtigung hinzufügen, bevor

Anwendung in Manifest-Datei starten

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

+0

Ich habe es schon, aber es nicht –

+0

Dann können Sie Ihren Weg nicht korrekt funktionierten ... versuchen mit 'Environment.getExternalStorageDirectory() ' – Hareesh

+1

auf neuen Geräten müssen Sie die Berechtigung manuell erteilen: https://developer.android.com/training/permissions/request.html.html –

Verwandte Themen