App legt Daten und Ordner im Gerätespeicher an

  • 8 Antworten
  • Letztes Antwortdatum
P

PhoenixRising

Neues Mitglied
0
Hallöchen, das ist schon mein dritter Thread und ich hoffe das mir dieses mal auch geholfen werden kann.

Wie im Titel schon beschrieben, geht es um das Anlegen von Ordnern und Dateien auf der SD-Karte, ich habe dafür eine Klasse geschrieben, die Manifest-Permission ist auch gesetzt:

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

Die Klasse schreibt mit dieser methode ordner, die Dateien werden dann mit einem PrintWrither realisiert.

Code:
    private File makeFolder(String folder) {
        File dir = new File(Environment.getExternalStorageDirectory() + "/" + folder + "/");
        if (!(dir.exists() && dir.isDirectory())) {
            dir.mkdirs();
        }
        return dir;
    }

Jetzt wird aber imemr auf den Gerätespeicher geschrieben und nicht auf die SD-Karte, benutze ich den falschen befehl? ich dachte das Enviroment.getExternalStorageDirectory() extra für die SD-Karte gedacht ist, jezt hab ich abe auch was vom Mounten gelesen und bin einfach nur total verwirrt.

Es wäre cool wenn mir jemand das erklären könnte.
 
Das ist was du versuchen solltest:

Code:
Environment.getExternalStorageDirectory().getAbsolutePath()

und nicht vergessen zu prüfen ob gemountet ist:

Code:
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)

Wenn das Speichermedium nicht gemountet ist(=angehangen) dann ist es nicht funktionsfähig und man kann damit nichts machen also weder schreiben noch lesen!

siehe auch:
Environment | Android Developers

Was nun "External Storage" ist , ist vom Hersteller festgelegt...Kann innerhalb des Handys ein abgetrennter innerer Speicherort sein oder halt traditionell die SD-Card
 
Danke!

Weißt du nun rein zufällig auch wie ich die SD-Card Mounte oder sie als Primary Storage Device auswähle? Es handelt sich um ein Samsung Galaxy 10.1 mit 5.0.2 Android.

Würde es vielleicht helfen wenn ich den Primären Speicherpunkt der App auf die SD-Card einstelle? bzw WIE man das macht?
 
Zuletzt bearbeitet:
Das kannst du ind en Einstellung festlegen dass alles auf der SD KArte gespeichert werden soll. Gute Programme beachten dass dann auch oder fragen den Benutzer wo er das gerne speichern möchte.

Das mounten geht eigentlich automatisch per Plug and Play einfach rein und es mountet...
 
Ja danach habe ich auch schon gesucht, gibt es aber keine Möglichkeit auf 5.0.2 und wenn dann finde ich sie nicht.
Es müsste doch einen weg geben das zu Programmieren oder nicht? Die Standardapps wie die Kamera z.B. können ihren Speicherort ja auch bestimmen, warum soll man dann nicht auch dazu in der lage sein?
 
ICh kann dir nur so viel sagen:

Environment | Android Developers

Das Eomzige was mir einfällt ist dass du einfach den externen Storage wie beschrieben abfragst und dann auch ob dieses Externe eine SD Card ist mit den Methoden im Link. Guck dir die gesamte Klasse auch an wenn du schon dabei bist ;)

Um den User aussuchen zu lassen einfach internen und externen Speicher abfragen und als Liste darstellen. User sucht sich ein aus und einfach anhand dessen speichern :) so schwer ist das doch gar nicht :D

Nun wie gesagt könnte es jetzt vom Hersteller so sein: physikalischer damit meine ich fest verbauter Speicher wurde in internal und external eingeteilt sein.
Jetzt kann da auch noch eine SD Karte ebenfalls mit an Bord sein:

Jetzt scheint es so dass die beschriebene Methode nur den physikalischen Speicher zurückgibt, trotzdem kannst du nachgucken wieviele Storages nun gemountet sind unter /proc/mounts android - How to list additional external storage folders (mount points)? - Stack Overflow

Dann einfach abfragen welche removeable sind oder einfach alle Anzeigen plus dem internen und das den User dann vorstellen :)
 
Leider gibt es dabei 2 Probleme, ich darf den Speicherort nicht Freiwählen lassen und ich darf auf den Speicherbereich der App schreiben, die Daten müssen bestand haben bis sich von hand gelöscht werden.

Ich habe bereits abgefragt ob der speicher auf dem gespeichert wird Removable ist, da es false liefert weiß ich auch das der Primäre ExterneSpeicher der Internespeicher ist. Ich hab mir die API der Klasse auch schon angeschaut, was den Stackoverflow link angeht sehe ich eher einen Workaround und keine Lösung.
 
Ein workaround ist auch eine Lösung.
In dem Fall kann ich dir auch nicht weiterhelfen. Android bietet leider nur diese Möglichkeit an auf externen zuzugreifen soweit ich das sehen kann und für jedes weitere externe Speichermedium gibt es da wohl keine API Lösung.

Es ist leider so und ich finde es ist nicht gerade ein Workaround. Die Methode ist schnell und sauber. Schreib dir ein paar Methoden dazu damit du es besser benutzen kannst und gut ist...

Ansonsten viel Erfolg
 
Zuletzt bearbeitet:
Ich danke dir trotzdem vielmals, zumindest kann ich jetzt nochmal eine dirtte bestätigung einholen.
Was ich jetzt aber noc nciht ganz klar sagen konnte an hand des Codes war, ob dieser Versions und Geräteunabhängig arbeiten kann, ich glaube du hast da mehr erfahrung mit?
 

Ähnliche Themen

G
Antworten
0
Aufrufe
132
Gerdchen07
G
G
Antworten
1
Aufrufe
384
Gerdchen07
G
G
Antworten
13
Aufrufe
596
Gerdchen07
G
L
Antworten
2
Aufrufe
553
Lexub
L
migi01
Antworten
26
Aufrufe
1.985
migi01
migi01
Zurück
Oben Unten