-1
nicht möglich

Ich bin gerade auf ein Problem gestoßen, das ich selbst nicht beheben kann.Speichern von heruntergeladenen Dateien unter Android 6.0 +

Ein Schlüsselelement dieser Anwendung ist das Herunterladen und eine Datei von einer URL zu speichern, für die ich bin mit einer Erweiterung von AsyncTask

Diese Datei schließlich

Environment.getExternalStorageDirectory().toString() + "/" + fileName + ".xls")

dann gespeichert wird ein Datei erstellt:

File file = new File(Environment.getExternalStorageDirectory().toString() + "/" + fileName + ".xls");

und ein strea m ist

InputStream is = new FileInputStream(file); 

gemacht An welcher Stelle ich ein FileNotFoundException ENOENT bekommen: keine solche Datei oder ein Verzeichnis.

Ich habe die entsprechenden Berechtigungen in der Datei meiner AndroidManifest.xml

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

Environment.getExternalStorageState() gibt "montiert" Wert eingestellt.

Und ich kann bestätigen, Internet-Verbindung hergestellt ist, wie zuvor kann ich alle Dateien herunterladen, muss ich mit entsprechenden Anmeldeinformationen in der App einloggen.

Ich mache diese App für API 16, Android 4.1 (Jelly Bean). Jede Hilfe würde sehr geschätzt werden!

EDIT: Ich habe geschafft, machen dies auf Samsung SM-G800G (Android 5.1.1, API 22) zu arbeiten. Aber die Anwendung läuft nicht auf meinem Nexus One (Android 6.0, API 23) oder SAMSUNG SM-G900F (Android 6.0.1, API 23).

Es ist also definitiv etwas los mit wie Android-Versionen den Download beeinflussen, ich bin gerade dabei.

+1

Haben Sie den Datei-Explorer verwendet, um zu prüfen, ob die Datei heruntergeladen wurde oder nicht? – TSR

+0

Ich habe jetzt, aber es gibt keine Anzeichen für die Datei. –

+0

Wahrscheinlich herunterladen ist in Ordnung, aber speichern in Datei nicht. Sie sollten sofort überprüfen, ob die Datei existiert. Nicht später. Probabky haben Sie unbemerkt Ausnahmen und keinen Code in Catch-Blöcken. – greenapps

Antwort

1

Danke für den Beitrag jeden war das Problem an anderer Stelle, als ich dachte und jetzt einfach gegoogelt werden kann.

Dank geht an this post von MetaSnarf

Das Problem ist in der Tat mit der Art und Weise, wie Android 6.0+ (API 23+) Berechtigungen behandelt.

Putting <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> in der AndroidManifest.xml Datei ist NICHT GENUG für die Anwendung die Erlaubnis zu bekommen. Ich habe es behoben, indem ich den folgenden Block in meinen Code eingefügt habe.

if (Build.VERSION.SDK_INT >= 23) { 
      if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { 
      } 
      else { 
       ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 
      } 
     } 
1

versuchen zu ersetzen:

`Environment.getExternalStorageDirectory().toString()` 

mit

`Environment.getExternalStorageDirectory().getAbsolutePath()` 
+0

Leider keine Änderung dort. –

Verwandte Themen