App data auf externen Storage

  • 4 Antworten
  • Letztes Antwortdatum
A

Andr_green

Neues Mitglied
2
Hallo,

ich habe mal eine Frage bzgl. des Speicherns von Daten auf der SD Card von meiner App.
Mit der von Google vorgeschlagenen Methode, prüfe ich ob der externe Speicher verfügbar ist und ob darauf geschrieben werden kann.

Code:
        if (Environment.MEDIA_MOUNTED.equals(state)) {
            // We can read and write the media
            mExternalStorageAvailable = mExternalStorageWriteable = true;

            File extdir = Environment.getExternalStorageDirectory();
            StatFs stats = new StatFs(extdir.getAbsolutePath());
            int availableBytes = stats.getAvailableBlocks()
                    * stats.getBlockSize();
            Log.i("size", availableBytes + "");
            
            
            String path=Environment.getExternalStorageDirectory().toString();
            File mFile= new File(path);
            if(!mFile.exists())
                mExternalStorageWriteable = false;

        } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
            // We can only read the media
            mExternalStorageAvailable = true;
            mExternalStorageWriteable = false;
        } else {
            // Something else is wrong. It may be one of many other states, but
            // all we need
            // to know is we can neither read nor write
            mExternalStorageAvailable = mExternalStorageWriteable = false;
        }
Allerdings stehe ich vor einem Rätsel. Ich habe zwei identische Galaxy S2 hier, eines mit SD Card eines ohne.
Sollen nun die Daten von meiner App gesichert werden, so wird geprüft, mit der obigen Methode, ob der externe Speicher verfügbar und schreibbar ist.
Bei dem S2 mit SD Karte werden die Daten richtig geschrieben, wenn in der App-Übersicht die Details für die App angeschaut werden so werden die Daten auf der SD Karte verfügbar angezeigt.
Bei dem ohne SD Karte, passiert etwas unvorgesehenes. Die Methode behauptet der Externe Speicher wäre verfügbar und schreibt die Daten irgendwo hin. Allerdings sehe ich in der App übersicht nur die Daten der eigentlichen App, ohne die Daten die eigentlich gespeichert wurde.
Werden diese aber in der App Daten abgerufen, so werden sie korrekten angezeigt. Die Daten sind also irgenwo! Nach einem Neustart des S2 ohne Karte waren die Daten noch immer verfügbar, also nicht im Speicher.
Weiss jemand warum das auftritt und wohin die Daten in soeinem Fall geschrieben werden?
Vielleicht ist die vorgegebene Methode nicht die passende??!!??
Habe ich irgenwo etwas übersehen??

Wäre euch Dankbar wenn ihr hierbei helfen könntet.
Danke
 
naja ich vermute mal samsung teilt den verfügbaren speicher auf und bietet dir auch so einen "externen speicher" an.
 
  • Danke
Reaktionen: Andr_green
Könnte eine möglichkeit sein.
Aber warum wird dann die App selber, die
als Speicherort den externen Speicher preferiert, nicht dort gesichert???
Wenn ich auf SD Karte verschiebe drücke bekomme ich sogar den Hinweis, dass nicht genug Speicherplatz verfügbar wäre....
 
Du müsstest vielleicht erstmal klären, was das Betriebssystem unter external storage versteht. Das muss nämlich nicht die SD Karte sein.

Bisschen verwirrend weil sich die Geräte weiterentwickelt haben, und weil Gerätehersteller den Speicher oft anders lösen als Google das vorgesehen hat, aber es wird ein bisschen klarer wenn man sich die Anfänge von Android vor Augen hält.

Das G1 hatte intern nur Systemspeicher für das BS und Apps. Dazu als externen Speicher eine SD Karte. Also ist die SD Karte der externe Speicher.

Dann hast du Geräte, die intern 4 oder 8 GB Speicher haben und keinen Kartenslot. 'External storage' ist also in der Tat der interne Speicher.

Und dann kamen Geräte die (obwohl von Android <3.2 eigentlich nicht unterstützt) sowohl einige GB intern als auch einen Kartenslot haben. Bei den meisten dieser Geräten ist es so, dass 'external storage' ebenfalls den internen Speicher meint. Der Kartenslot existiert offiziell nicht und kann normalerweise über die SDK auch nicht gefunden werden, weil die Unterstützung dafür ist von den Herstellern selbstgestrickt, und nicht Teil der SDK. Das erklärt übrigens auch, wieso jeder Hersteller bei den Pfaden zur SD sein eigenes Süppchen kocht.

Ich würde daher vermuten, dass dein Problem daher rührt, dass du glaubst mit "SD Karte" sei "SD Karte" gemeint. Aber das wäre ja zu einfach...
 
  • Danke
Reaktionen: Andr_green
Ja wahrscheinlich gehe ich bei SD Karte von einer 'realen' SD Karte aus.
Liegt ja auch, rein vom namen her, nahe.
Aber Danke euch beiden für eure Antworten.
Merkwürdig finde ich es dann aber schon, dass die Daten die auf der externen SD gespeichert wurden, nicht zu den App Daten hinzugezählt werden.
Aber ich könnte mir auch vorstellen, dass das mit diesem hier zu tun hat:

..Der Kartenslot existiert offiziell nicht und kann normalerweise über die SDK auch nicht gefunden werden, weil die Unterstützung dafür ist von den Herstellern selbstgestrickt, und nicht Teil der SDK. Das erklärt übrigens auch, wieso jeder Hersteller bei den Pfaden zur SD sein eigenes Süppchen kocht....
und das BS die Daten der übersichtsseite (TaskManager) ausliest.
Naja seis drum.

Kann ich den einem User der App zumuten, das die Daten da sind aber nicht angezeigt werden in der benannten Seite???

LG
 

Ähnliche Themen

G
Antworten
0
Aufrufe
148
Gerdchen07
G
G
Antworten
1
Aufrufe
394
Gerdchen07
G
G
Antworten
13
Aufrufe
621
Gerdchen07
G
L
Antworten
3
Aufrufe
665
mips400
mips400
migi01
Antworten
26
Aufrufe
2.041
migi01
migi01
Zurück
Oben Unten