Hallo zusammen,
das Thema ist mit Android 11 nicht neu. Ich habe aber noch keine funktionierende Lösung gefunden.
Es geht "einfach" nur darum den Namen der externen SDKarte zu ermitteln. Tools, wie Totalcommander etc. können das und können darauf sogar schreiben.
Mit:
Delphi-Quellcode:
sArr := system.ioutils.TDirectory.GetDirectories('/storage/6172-079C');
Say ( 'Anzahl: '+inttostr(length(sArr)) );
for i := 0 to length(sArr)-1 do begin
Say ( inttostr(i)+': '+' '+sArr[i] );
end;
funktioniert es prima. Rechte sind also da.
ABER: der Name "6172-079C" (aus diesem Beispiel) ist irgendwie nicht zu ermitteln.
Folgendes habe ich versucht:
Delphi-Quellcode:
cBuf := GetExternalStorageDirectory; // abgekündigt
Say ( 'GetExternalStorageDirectory: '+cBuf ); // => /storage/emulated/0
Delphi-Quellcode:
cBuf := GetExternalFilesDir;
Say ( 'GetExternalFilesDir: '+cBuf ); // => /storage/emulated/0/Android/data/$Appname$/cache
Delphi-Quellcode:
cBuf := GetSysSecondaryStorage;
Say ( 'GetSysSecondaryStorage: '+cBuf ); // => /sdcard
dann mit sArr := system.ioutils.TDirectory.GetDirectories('/storage/sdcard');
gibt es aber wieder nur die internen Daten.
Also, wenn man den Namen weiß und einfach verwendet, werden die Daten auf der SD-Karte aufgelistet.
Der Name kommt aber mit keiner mir bekannten Funktion zurück.
Ich verwende Delphi 10.4 Update 2
Android 11 Sicherheitspatch 1.August 2021 auf Samsung S20
Hiermit bin ich auch nicht weitergekommen:
https://www.delphipraxis.net/207119-...te-heraus.html
http://cc.embarcadero.com/Item/30158
Hat jemand eine Idee?