Auf externe SD-Karte zugreifen?

  • 8 Antworten
  • Neuester Beitrag
Diskutiere Auf externe SD-Karte zugreifen? im Android App Entwicklung im Bereich Betriebssysteme & Apps.
K

Kernle 32DLL

Neues Mitglied
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
 
F

funcoder

Fortgeschrittenes Mitglied
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 :)
 
S

swordi

Lexikon
funktioniert, wie mein vorgänger beschreibt.

nimm bitte

Environment.getExternalStorage...

anstelle des fixen pfades. nicht jedes gerät hat eine sd karte
 
garak

garak

Ehrenmitglied
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!
 
garak

garak

Ehrenmitglied
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.
 
R

r4in

Ambitioniertes Mitglied
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:
 
S

swordi

Lexikon
was für ein händy hast du ?

hat es überhaupt eine sd karte?
 
R

r4in

Ambitioniertes Mitglied
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: