Auf externe SD-Karte zugreifen?

K

Kernle 32DLL

Neues Mitglied
0
Moin,

Ich besitze erst seit ein paar Wochen ein "echtes" Androd Gerät (Galaxy S), und beim testen meiner bisherigen Programme aus dem Emulator ist mir etwas aufgefallen. Alle Programm die etwas auf die SD Karte schreiben sollen, tun dies immer auf die Interne SD Karte.

Nach kurzem stöbern ist mir aufgefallen das auch die Doku was dazu sagt, aber nicht erklärt wie man auf die Externe SD Karte zugreifen kann. Das Problem hierbei ist, das meine Apps nach Möglichkeit 1.6 kompatibel bleiben sollten, die direkten Befehle um auf die Externe SD Karte zuzugreifen aber erst seit 2.2 vorhanden sind (z.B. getExternalStoragePublicDirectory).

Gibt es eine Möglichekti das in 1.6 umzusetzen, oder muss ich auf 2.2 umsteigen?

So long,
Kernle
 
Ja das funktioniert bzw. du kannst auch mit Android 1.6 auf die SD-Karte zugreifen.
Beispielsweise um eine Datei zu schreiben:
Code:
FileWriter fWriter = new FileWriter("\sdcard\test.txt");
fWriter.write(deinInhalt);
fWriter.flush();
fWriter.close();

Und natürlich die Permission in der Manifest File nicht vergessen :)
 
funktioniert, wie mein vorgänger beschreibt.

nimm bitte

Environment.getExternalStorage...

anstelle des fixen pfades. nicht jedes gerät hat eine sd karte
 
Und verwende Slashs (/) anstelle Backslashs (\), das spart einen Übersetzungsvorgang. Als Programm sieht das dann in etwa so aus:
Code:
File file = null;

// Prüfen ob externe Karte vorhanden ist und entsprechend eine Datei erzeugen
String state = Environment.getExternalStorageState();
if (state.equals(Environment.MEDIA_MOUNTED)) {
  File path = Environment.getExternalStorageDirectory();
  file = new File(path + "/Unterverzeichnis/", "DeineDatei.txt");

} else {
 // Hier Dateizugriff für internen Speicher
  ...
}

FileWriter fw = new FileWriter(file);
fw.write("BlahBlah");
fw.close(); // flush ist überflüssig, wird durch close erledigt!
 
Da uns der TE darüber im unklaren gelassen hat was er denn speichern möchte, sehe ich das eher als Spekulation. Mein Code-Beispiel sollte auch lediglich die Verwendung der von Swordi richtigerweise aufgeführten Verwendung der Umgebungsvariablen zur Ermittlung der SD-Karte dienen, inklusive der Abfrage ob denn überhaupt eine solche verfügbar ist, als denn die genaue für den TE am besten geeignete Funktion zu ermitteln. Somit wäre auch deine erste Frage beantwortet.
 
Hallo Leute,

ich hab so ein ähnliches Problem möchte eine SQLite Datenbank auf meine SDCARD abspeichern

Path = "\\sdcard\\test.db";
Path = "/sdcard/test.db";

und auch die Sache mit getEnviroment.xxx geht nicht mehr.

Es fliegt immer die Exception File /sdcard/test.db contains a path seperator.

Weiss jemand warum? Bin ein bisschen verblüfft, weil bei meinem Tablet PC gehts aber beim Handy nicht. :blink:
 
was für ein händy hast du ?

hat es überhaupt eine sd karte?
 
ein Motorola MB 525 und ja ist ne SDCARD drin.
Hab gerade gesehen das der Emulator auch meckert, dass ist mir nicht aufgefallen, weil ich immer das Tablet als Debug dran hatte.

Fehler ist leider immernoch der selbe File /sdcard/test.db contains a path seperator :sneaky:
 

Ähnliche Themen

M
  • MikelKatzengreis
Antworten
5
Aufrufe
118
swa00
swa00
E
Antworten
0
Aufrufe
698
enrem
E
B
Antworten
4
Aufrufe
472
bb321
B
Zurück
Oben Unten