Schreiben auf die internen, privaten Speicher in Android

Ich versuche zu speichern einige Daten aus meiner Anwendung in eine einfache text-Datei auf dem internen, privaten Speicherbereich (app-Benutzer-Einstellungen). Ich habe gelesen durch viele Fragen hier (StackOverflow) und habe versucht, die Lösungen vorgeschlagen, ohne Erfolg. Die einfachste Lösung, so scheint es, würde derjenige sein, der hier vorgeschlagen:

http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

aber ich Schaffe es nicht, dies funktioniert auf meinem test-Gerät. Ich habe auch versucht, erstellen Sie die Datei mit den verfügbaren Methoden in java.io.Eine Datei mit den entsprechenden Methoden. Ich habe auch versucht, die Datei auf die SD-Karte mit dem gleichen Ergebnis, scheitern. Ich habe versucht, viele Lösungen aufgelistet, die in anderen Antworten, folgenden Sie den code und Anweisungen vorgeschlagen, genau und finden das selbe Ergebnis. Ich bin beginnen zu fühlen, dass ich bin fehlen einige wichtige bit-code, oder eine Einstellung Flagge irgendwo, ich habe die Berechtigungen in der manifest-Datei:

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

Klar zu sein, ich bin versucht, zu schreiben, um das Gerät die interne, private Lagerhaltung. Es ist eine kleine Datei mit einem Namen, Telefonnummer, und ein paar Art int flags. Was auch immer Methode, die ich verwenden, die ich entweder finden Sie, dass die Datei nicht erstellen (oder ändern, wenn ich die Datei manuell auf die SD-Karte), oder bekomme ich eine NullPointerException wenn ich versuche, verweisen Sie auf die Datei oder den Speicherort der Datei:

private              File   fILE = new File("Mydata", main.FILENAME);

oder

private              File   fILE  = getDir("Mydata", 0);


Bei mir läuft der code auf einem HTC Hero, aktualisiert mit den neuesten service release von Sprint. Jede Hilfe wäre SEHR geschätzt, Danke im Voraus!

-Steve

Update (2/2/11): Mit einem EVO (API 8) noch heute bekomme ich eine NullPointerException. Die code-Generierung ist die Ausnahme unten, irgendwelche Gedanken auf, warum meine app keinen Zugriff auf den internen Speicher? Ich habe dieses problem auf drei verschiedene physische Geräte über zwei API Level (API 7 und 8).

    File newfile = new File(this.getFilesDir() + "/data/files/", "sample.txt");

UPDATE 2: 2/4/11 - ich habe festgestellt, dass ich nicht sehen, die Datei-Struktur, die auf dem physischen Gerät (Daten-Verzeichnis) unter keinen Umständen. Jeder irgendwelche Gedanken dazu? Das Gerät ist richtig konfiguriert, und kann ausführen der app von eclipse oder adb.

UPDATE 3: (2/9/11) - ich glaube, ich habe gefunden was das problem hier ist, aber ich bin nicht sicher, wie Sie damit umgehen. Ich habe herausgefunden, dass die Berechtigungen auf das /data/- Verzeichnis auf der physischen Geräte: drwxrwx--x. Ich bin nicht sicher, warum es so ist, vielleicht etwas mit Sprint? Ich habe festgestellt, dass dies so festgelegt ist auf ein HTC Hero, Samsung Epic (Galaxy S), und HTC EVO alles auf den Sprint. Das Problem scheint zu sein, dass DDMS und meine app nicht habe r/w Zugriff auf das Verzeichnis. Ich brauche, um herauszufinden, 2 Sachen hier, warum das so ist und wie man mit diesem Problem in der wildnis. Wieder, jede Hilfe wäre hier SUPER!!

UPDATE 4: ich denke, letzten Februar war eine total blonde moment für mich (siehe UPDATE 3). Die test-Geräte, die ich habe sind nicht Verwurzelt und daher keinen Zugang genutzt werden soll (DUH!). Nach all den updates, die er der SGS-Gruppe und der EVO 4G durch gegangen, das Ergebnis ist immer noch das gleiche. Ich arbeite immer noch dieses problem und werden versuchen, hier wieder mit einem update bald (hoffentlich weniger als einem Jahr das nächste mal).

  • Erhalten Sie eine Fehlermeldung, wenn Sie versuchen, diese verschiedenen Methoden oder ist es nur im hintergrund aufgetreten?
  • Habe ich mich auf das openFileOutput() Weg gerade jetzt, und ich bin immer eine NullPointerException. Es scheint, dass die privaten Daten-Verzeichnis auf dem Telefon ist gesperrt, aus irgendeinem Grund, ich kann nicht einmal in das Verzeichnis; es ist wie nichts, schafft es. Die Berechtigungen auf den "data" - Verzeichnis auf dem Telefon: "drwxrwx--x". Ich beginne mich zu Fragen, ob es ist eine ungültige Einstellung auf dem Handy oder so etwas. Es ist eine Anforderung von der app, dass die Daten-Datei schreibt, um den internen Speicher für die Kompatibilität.
  • Sie werden nicht in der Lage, Zugriff auf das /data Verzeichnis auf einem physischen Gerät mit DDMS, es sei denn, Sie haben root-Zugriff, aber Sie sollten noch in der Lage sein, zu schreiben, um die Datei aus Ihrer Anwendung. was passiert auf dem emulator? Sie können eine Datei schreiben ok?
  • Ich kann schreiben, ok mit der File-Klasse auf dem emulator. das ist der seltsame Teil, ich habe root-Zugriff auf das Telefon, sollte ich nicht?
  • Sie müssen nicht root-Zugriff auf einem realen Gerät, es sei denn, Sie root dem OS. Die würde ich nicht empfehlen. Ich habe ein Google Dev Phone 2 und auch nicht, die hat root-Zugriff. Kannst du den stacktrace aus Logcat? Es macht keinen Sinn, dass es funktioniert auf dem emulator, aber keines der Geräte.
InformationsquelleAutor Kingsolmn | 2011-01-20
Schreibe einen Kommentar