Einzelnen Beitrag anzeigen

nikosophi

Registriert seit: 8. Mai 2013
Ort: Weilerswist
47 Beiträge
 
Delphi 11 Alexandria
 
#1

[Android] angeschlossene "/storage/"s finden

  Alt 5. Aug 2016, 18:14
Hallo in die Runde...

hat es jemand geschafft für Firemonkey/Android die "Namen" der angeschlossenen SD-Karten oder USB Sticks zu ermitteln.
Ich versuche seit einiger Zeit vornehmlich für Android 6.01 zu ermitteln, ob und wenn ja, welche Speichermedien angeschlossen sind.

Erwarten würde ich eine Liste wie:
/storage/emulated/0/ // interne Karte
/storage/extSdCard/ // zusätzliche Karte, wenn eingelegt
/storage/UsbDriveA/ // USB Stick, wenn angesteckt
...

Getestet habe ich bisher folgendes:

1) alte Methode aus PC Zeiten:

P := '/storage/';
if (FindFirst(P + '*', faAnyFile, Sr) = 0) then
repeat
cPath := Sr.Name;
if copy(cPath, 1, 1) = '.' then begin
log (cPath+' wird ignoriert.');
end else begin
log ('Prima: '+cPath);
end;
until (FindNext(Sr) <> 0);
FindClose(Sr);

Ergebnis:
Auf allen Geräten ( Nexus5 6.01, Nexus7 6.01, S3 4.3) wir nur "." und ".." gefunden. Also nicht mal der interne Speicher.

2) FlyFilesUtils von wang80919qq heruntergeladen von:
https://sourceforge.net/projects/fmxflyfilesutils/

Eine schöne Sammlung netter Funktionen.
Alle Funktionen, die auf externe SD Karten zugreifen sollen, wie etwa "FlyFilesUtils.GetExterStoragePath" liefern für Android 6 keine Ergebnisse.
Für Android 4.3 gehts. Zwar liefert getVolumePaths aus 'android/os/storage/StorageManager' auch USB Anschlüsse '/storage/UsbDriveA/ bis '/storage/UsbDriveF/
obwohl kein Stick oder nur einer angeschlossen sind, aber immerhin.
Für Android 6 ist es aber nicht zu gebrauchen.

3) Wenn die möglichen Bezeichnungen '/storage/sdcard' '/storage/sdcard_ext' '/storage/_ExternalSD' und so weiter wenigstens eindeutig wären, könnte man die Liste der möglichen Bezeichnungen ja durchprobieren.
Aber natürlich hat ein Kunde ein Gerät, das ich leider nicht zum testen selbst verwenden kann eine Bezeichnng mit einer fürchterlichen Nummer drin.
Das habe ich auch in dem Artikel wiedergefunden:

http://www.heise.de/ct/artikel/Hinte...t-2679598.html

Zitat:
Beim verschlüsselten Formatieren bekommt die SD-Karte eine spezielle ID und wird unter /storage gemountet, unsere beispielsweise unter /storage/586675d6-6838-4bc0-abdf-df0fab107195/0. Environment.getExternalStorage() liefert nun diesen Pfad zurück.

Es hilft also nichts. Das OS muss den Namen herausrücken. Aber wie???

Hilfe wird sehnsüchtig und dankbar entgegengenommen!
  Mit Zitat antworten Zitat