Ich versuche, eine JSON-Zeichenfolge in einer Datei im 'externen' Speicher zu speichern. Insbesondere der Ordner Dokumente. Dies sollte der Speicher sein, auf den Sie mit einem Dateibrowser, von Google Mail oder über USB auf Ihrem Computer zugreifen können.Android-App speichert im 'emulierten' Speicher anstelle des aktuellen Verzeichnisses
Also folgte ich die Dokumentation here und kam mit dieser: (. Notiz, geändert nun zuerst ein Verzeichnis erstellen, dann Dateinamen anhängen Speicher jetzt MediaScanner zu verwenden versuchen)
public static File GetDocumentsPath(String tuningName) {
// Get the directory for the user's public pictures directory.
File dir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOWNLOADS).getAbsolutePath());
if (!dir.mkdirs()) {
Logy.CallPrint("JSONTuning", "Directory not created");
}
File outFile = new File(dir, tuningName);
return outFile;
}
public static String SaveTuning(Context context, String fileName, String json)
{
File path;
if(fileName.contains(".rfts")) {
path = GetDocumentsPath(fileName);
} else {
path = GetDocumentsPath(fileName+".rfts");
}
Logy.Print("|||||||||||||||| "+path.getPath());
try {
FileOutputStream fileOut = new FileOutputStream(path);
ObjectOutput strOut = new ObjectOutputStream(fileOut);
strOut.writeUTF(json);
strOut.close();
fileOut.close();
MediaScannerConnection scanner = new MediaScannerConnection(context, null);
scanner.connect();
if(scanner.isConnected())
scanner.scanFile(path.getPath(), null);
scanner.disconnect();
return "Save Successful";
}
catch(java.io.IOException e) {
return e.getMessage();
}
}
So angemeldet ich den Weg, den ich kam von GetDocumentsPath. Dieser Pfad wäre: /storage/emulate/0/Download/Test.rfts
Dies führt nicht dazu, dass die Datei in Dokumenten gespeichert wird, soweit ich über Dateimanager/Computer darauf zugreifen kann. Die Tatsache, dass das Wort "emuliert" dort drin ist, lässt mich glauben, dass die Umwelt mir den tatsächlichen Weg überhaupt nicht gibt.
ich tun, um die Fehler „/storage/emulated/0/Documents/Test.rfts: öffnen, ist fehlgeschlagen: ENOENT (Keine solche Datei oder das Verzeichnis)“ erhalten
Was den richtigen Pfad zu bringen braucht, und speichern zu , der Dokumentenordner im externen Speicher?
Als eine Nebenbemerkung funktioniert die Art, wie ich die Datei schreibe perfekt für den internen Speicher, da ich keine Probleme beim Erstellen einer Datei mit App-Einstellungen habe.
Auch ich sollte beachten, dass meine App Manifest hat " " –