2016-05-13 4 views
2

Ich versuche einige Bildschirmabbilder für Debugging-Zwecke in internen Speicher zu speichern, aber ich kann nicht scheinen, um auf sie zuzugreifen. . Als ich FileSystemStorage.getInstance() aufrufen getAppHomePath(), erhalte ich einen Weg, der etwa wie folgt aussieht:Speichern von Dateien in CodenameOne

/data/data/com.mycompany.myapp/files/

Aber ich kann nicht sehen diesen Ordner im Tool zum Übertragen von Dateien von Android, sodass ich die Dateien nicht auf meinen Mac ziehen kann. Ich habe auch versucht, sie an eine E-Mail mit der Message-Klasse anzuhängen, aber aus irgendeinem Grund tauchten die Anhänge nie auf. Ich stelle fest, dass viele Anwendungen speichern Daten in Ordnern wie folgt aus:

/Android/data/com.doubletwist.androidplayer/ 

Wenn ich versuche, einen Ordner wie diese zu erstellen, ich laufe in zwei Probleme. Erstens ist es nicht plattformunabhängig. (Das ist nicht wichtig, weil ich das nur zum Debuggen mache.) Zweitens funktioniert es nicht. Ich erhalte eine Fehlermeldung, dass ich das von FileSystemStorage.getInstance() zurückgegebene Verzeichnis verwenden muss. GetAppHomePath()

Gibt es eine Möglichkeit, Dateien in einem Ordner zu speichern, aus dem ich sie tatsächlich abrufen kann? Es wäre hilfreicher, wenn ich plattformunabhängig wäre, aber alles, was funktioniert, ist im Moment in Ordnung.

Antwort

0

Dateisystem ist eine sehr "unportable" Vorstellung. App home ist standardmäßig ein privater Ordner, den einige mobile Betriebssysteme einschließlich Android 4+ privat und unzugänglich halten.

Android hat ein Konzept von "sdcard", das früher ein physischer Speicher war, in dem Sie alles in jedem Verzeichnis ohne ein Problem schreiben konnten. Dies gilt nicht für neuere Versionen von Android, aber Sie können aus dem SDCard-Verzeichnis lesen und erkennen.

FileSystemStorage hat eine API, um Wurzeln und ihre Typen zu bekommen, wenn Sie eine SD-Karte haben, können Sie von dort lesen. Sie können die Datei FileTree verwenden, um die Dateihierarchie so zu sehen, wie sie für Ihre Anwendung verfügbar ist, was für das Debugging nützlich sein kann.

+0

Vielen Dank für die Klärung. Es klingt, als könnte ich nur in ein einziges Verzeichnis schreiben, das sonst niemand sehen kann. Andere Android-Apps können jedoch in Verzeichnisse auf dem Pfad/Android/data//schreiben. Das wäre sehr nett zu haben. Wie es ist, kann ich nicht einmal mein E-Mail-Programm verwenden, um angehängte Dateien anzuhängen, weil es sie nicht sehen kann. Ich bin mit anderen Plattformen nicht so vertraut, aber es wäre sehr nützlich, wenn CodenameOne eine Methode zur Verfügung stellen würde, um ein Benutzerverzeichnis zu erstellen/zurückzugeben, das andere sehen könnten. – MiguelMunoz

+0

Das ist nicht, was ich gesagt habe, siehe den "sdcard" Absatz. –

+0

Vielleicht missverstehen wir uns gegenseitig. Der "sdcard" -Absatz sagt mir, dass ich nicht auf die SD-Karte schreiben kann. Die Dateien, die ich anhängen möchte, sind von mir erstellte Dateien. Daher kann ich sie nur in einem Verzeichnis speichern, das mein E-Mail-Programm nicht sehen kann. – MiguelMunoz