FileNotFoundException (Zugriff verweigert), wenn Sie versuchen zu schreiben, Datei auf SD-Karte in Android

Wie Sie sehen können aus dem Titel, ich habe ein problem mit dem schreiben der Datei auf SD-Karte in Android. Ich habe diese Frage, aber es hat mir nicht helfen. Ich möchte schreiben Datei, die im öffentlichen Raum auf sdcard, so dass jede andere app könnte es Lesen.

Als erstes prüfe ich, ob sdcard gemountet ist:

Environment.getExternalStorageState();

Habe ich dann diesen code ausführen:

File baseDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
    baseDir.mkdirs();
    File file = new File(baseDir, "file.txt");
    try {
        FileOutputStream out = new FileOutputStream(file);
        out.flush();
        out.close();
        Log.d("NEWFILE", file.getAbsolutePath());
    } catch (IOException e) {
        e.printStackTrace();
    }

Habe ich:

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

<application>
...
</application>
</manifest>

in meinem AndroidManifest.xml.

Genaue Fehler ist:

java.io.FileNotFoundException: /storage/1510-2908/Download/secondFile.txt: open failed: EACCES (Permission denied)

Ich Teste meinen code auf dem emulator (emuliert dem nexus5 API-23). Mein minimum required SDK version 19 (4.4 Kitkat).


Auch, klappt alles mit dem schreiben von Dateien in den privaten Ordner auf sdcard mit dem gleichen code, so würde ich sagen ehemaligen-code sollte auch funktionieren:

File newFile = new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), "esrxdtcfvzguhbjnk.txt");
    newFile.getParentFile().mkdirs();
    try {
        FileOutputStream out = new FileOutputStream(newFile);
        out.flush();
        out.close();
        Log.d("NEWFILE", newFile.getAbsolutePath());
    } catch (IOException e) {
        e.printStackTrace();
    }

Hat jemand eine Ahnung was das problem sein könnte? Könnte es sein, dass irgendwie KitKat 4.4 einfach nicht schreiben, um den öffentlichen Raum in sdcard mehr oder?

  • Was ist der Wert, den Sie bei Log.d("NEWFILE", file.getAbsolutePath()); ?
  • stackoverflow.com/questions/23527767/...
  • Sie müssen auch auf Anfrage WRITE_EXTERNAL_STORAGE Berechtigungen zur Laufzeit, Wie Sie testen es "dem nexus5 API-23".
  • ich denke, es ist wegen der Erlaubnis Handhabung in android m. wie in deepanker link beschrieben, dann müssen Sie einen Antrag für die Erlaubnis vor dem Zugriff auf den Speicher in android m.
  • Check dieser und dieser für weitere Details.
InformationsquelleAutor Drag0 | 2016-02-09
Schreibe einen Kommentar