Ich möchte den Benutzern meiner Anwendung die Wahl geben, auf dem internen Telefonspeicher oder auf einer SD-Karte zu speichern. Wenn ich ein File
aus der Wahl des Benutzers zu erstellen, ist die URI (ohne die Dateinamen) so etwas wie:Schreiben auf SD-Karte Android
Intern: Inhalt: /com.android.externalstorage.documents/tree/primary%3A
SD: Inhalt: /com.android.externalstorage.documents/tree/760E-F734%3A
Allerdings, wenn ich versuche, eine Datei auf diese Verzeichnisse mit dem folgenden Code zu schreiben, erhalte ich die Fehler java.io.IOException: No such file or directory
:
File writePath = new File("content:/com.android.externalstorage.documents/tree/primary%3A")
File file = new File(writePath, fileName);
try {
file.createNewFile();
} catch (IOException e) {
Log.e("saveSurvey", "Failed to create file!" + e.getMessage());
return false;
}
Also würde die Datei irgendwo geschrieben werden dies wie:
Inhalt: /com.android.externalstorage.documents/tree/primary%3A/ [mein Dateiname]
ich die WRITE_EXTERNAL_STORAGE
Erlaubnis im Manifest erklärt habe, also denke ich, ist es nicht ein Berechtigungen Problem aber mehr von einem ungültigen Pfad Problem.
Wenn dies keine gültigen Dateipfade sind, wie würde ich dann auf die SD-Karte schreiben? Die Verwendung von Environment.getExternalStorageDirectory()
schreibt immer in den internen Speicher meines Gerätes ('/ storage/emulated/0').
Sie mischen zwei Konzepte beim Erstellen der Datei, die Sie senden eine 'content' URI während beantragen müssen es erwartet einen 'Datei'-URI, weitere Informationen unter https://developer.android.com/reference/java/io/File.html Der von' Environment.getExternalStorageDirectory() 'zurückgegebene Pfad ist korrekt, der AVD emuliert normalerweise einen externen Speicher in diesem Pfad, und nicht verwechseln SD-Karte mit externem Speicher kann es eine andere Quelle sein, weitere Informationen in https://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory() –
@ AlbertoMéndez Danke für die Info. Ich verstehe, dass der "externe" Speicher entweder die SD-Karte oder der Speicher des einbaubaren Geräts sein kann, aber wie schreibe ich auf die SD-Karte im Gegensatz zum Gerätespeicher? – petehallw