1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Auf externe SD-Karte zugreifen?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Kernle 32DLL, 03.04.2011.

  1. Kernle 32DLL, 03.04.2011 #1
    Kernle 32DLL

    Kernle 32DLL Threadstarter Neuer Benutzer

    Beiträge:
    23
    Erhaltene Danke:
    0
    Registriert seit:
    06.01.2010
    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
     
  2. funcoder, 03.04.2011 #2
    funcoder

    funcoder Erfahrener Benutzer

    Beiträge:
    218
    Erhaltene Danke:
    38
    Registriert seit:
    15.08.2009
    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 :)
     
  3. swordi, 03.04.2011 #3
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    funktioniert, wie mein vorgänger beschreibt.

    nimm bitte

    Environment.getExternalStorage...

    anstelle des fixen pfades. nicht jedes gerät hat eine sd karte
     
  4. garak, 04.04.2011 #4
    garak

    garak Ehrenmitglied

    Beiträge:
    8,270
    Erhaltene Danke:
    4,795
    Registriert seit:
    12.12.2009
    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!
    
    
     
  5. Fr4gg0r, 04.04.2011 #5
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Zuletzt bearbeitet: 04.04.2011
  6. garak, 04.04.2011 #6
    garak

    garak Ehrenmitglied

    Beiträge:
    8,270
    Erhaltene Danke:
    4,795
    Registriert seit:
    12.12.2009
    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.
     
  7. r4in, 05.04.2011 #7
    r4in

    r4in Android-Hilfe.de Mitglied

    Beiträge:
    88
    Erhaltene Danke:
    3
    Registriert seit:
    16.09.2010
    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:
     
  8. swordi, 05.04.2011 #8
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    was für ein händy hast du ?

    hat es überhaupt eine sd karte?
     
  9. r4in, 05.04.2011 #9
    r4in

    r4in Android-Hilfe.de Mitglied

    Beiträge:
    88
    Erhaltene Danke:
    3
    Registriert seit:
    16.09.2010
    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:
     

Diese Seite empfehlen