Roman
- Forum-Beiträge: 20
31.12.2012, 17:32:02 via Website
31.12.2012 17:32:02 via Website
Hallo zusammen,
wie ich im Titel schon andeute, versuche ich die eingelegte SD-Karte vom internen Speicher zu unterscheiden. Leider steht mir .isExternalStorageRemovable() nicht zur Verfügung und so habe ich letztlich den Tip aus der c't 23/12, S. 172 befolgt.
Mit folgendem Code ermittel ich die Laufwerke:
Das ist nur ein Ausschnitt; _lstLaufwerke ist eine ArrayList vom Typ C_Device, in dieser Klasse speicher ich Bezeichnung, Pfad und das Flag, ob interner oder externer Speicher.
Wie auch immer, ich habe mir zu Testzwecken das Huawei Smartphone aus dem Lidl gekauft und hier ist der erste Speicher die SD-Card und der zweite in der Liste der interne Speicher. Das ist dann wohl die Ausnahme von der Regel :-). Jedenfalls sind die beiden Speicher-Quellen in der übergeordneten Activity vertauscht. Ich könnte ja einfach die Namen sdcard und sdcard2 übernehmen, schließlich sollte ja jeder wissen, was er wo drauf gespeichert hat und daran die SD-Card erkennen. Aber diese Lösung ist ja nicht so toll.
Meine Frage lautet also: Wie kann ich feststellen, ob der gefundene Speicher eine SD-Card ist?
Ich hau mich vor der Nachtschicht (einer verliert immer) nochmal aufs Ohr und wünsche euch schonmal einen guten Rutsch, feiert für mich mit :-)
Schöne Grüße,
Roman
PS: mit dem Code einfügen habe ich es ja, die Struktur geht immer hops
wie ich im Titel schon andeute, versuche ich die eingelegte SD-Karte vom internen Speicher zu unterscheiden. Leider steht mir .isExternalStorageRemovable() nicht zur Verfügung und so habe ich letztlich den Tip aus der c't 23/12, S. 172 befolgt.
Mit folgendem Code ermittel ich die Laufwerke:
1File root;
2
3try {
4 Scanner scanner = new Scanner(new File("/proc/mounts"));
5 while (scanner.hasNext()) {
6 String strZeile = scanner.nextLine();
7 if (strZeile.startsWith("/dev/block/vold/")) {
8 String[] strSplit = strZeile.split(" ");
9 root = new File(strSplit[1]);
10 if (root.isDirectory() && root.canWrite()) {
11 // den 1. gefundenen Speicher als internen annehmen (c't 23/12, S. 172)
12 if (_lstLaufwerke.size() == 0) {
13 _lstLaufwerke.add(new C_Device("internal\nstorage", root, false));
14 } else {
15 _lstLaufwerke.add(new C_Device("external\nsd card", root, true));
16 }
17 }
18 }
19 }
20} catch (Exception e) {
21 e.printStackTrace();
22}
2
3try {
4 Scanner scanner = new Scanner(new File("/proc/mounts"));
5 while (scanner.hasNext()) {
6 String strZeile = scanner.nextLine();
7 if (strZeile.startsWith("/dev/block/vold/")) {
8 String[] strSplit = strZeile.split(" ");
9 root = new File(strSplit[1]);
10 if (root.isDirectory() && root.canWrite()) {
11 // den 1. gefundenen Speicher als internen annehmen (c't 23/12, S. 172)
12 if (_lstLaufwerke.size() == 0) {
13 _lstLaufwerke.add(new C_Device("internal\nstorage", root, false));
14 } else {
15 _lstLaufwerke.add(new C_Device("external\nsd card", root, true));
16 }
17 }
18 }
19 }
20} catch (Exception e) {
21 e.printStackTrace();
22}
Das ist nur ein Ausschnitt; _lstLaufwerke ist eine ArrayList vom Typ C_Device, in dieser Klasse speicher ich Bezeichnung, Pfad und das Flag, ob interner oder externer Speicher.
Wie auch immer, ich habe mir zu Testzwecken das Huawei Smartphone aus dem Lidl gekauft und hier ist der erste Speicher die SD-Card und der zweite in der Liste der interne Speicher. Das ist dann wohl die Ausnahme von der Regel :-). Jedenfalls sind die beiden Speicher-Quellen in der übergeordneten Activity vertauscht. Ich könnte ja einfach die Namen sdcard und sdcard2 übernehmen, schließlich sollte ja jeder wissen, was er wo drauf gespeichert hat und daran die SD-Card erkennen. Aber diese Lösung ist ja nicht so toll.
Meine Frage lautet also: Wie kann ich feststellen, ob der gefundene Speicher eine SD-Card ist?
Ich hau mich vor der Nachtschicht (einer verliert immer) nochmal aufs Ohr und wünsche euch schonmal einen guten Rutsch, feiert für mich mit :-)
Schöne Grüße,
Roman
PS: mit dem Code einfügen habe ich es ja, die Struktur geht immer hops
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.