![]() |
SD-Karte ermitteln schlägt in Delphi 10.4 fehl
In der Funktion
Delphi-Quellcode:
bekomme ich einen Laufzeitfehler an der gezeigten Stelle, alle Berechtigungen, die das Programm unter 10.3 hatte hat es in 10.4 auch bekommen...
function GetExternalSDCardDirectory: string;
var EmulStorage, RootDir, AFile: JFile; FileDirs: TJavaObjectArray<JFile>; isMounted: JString; i: integer; begin EmulStorage := TJEnvironment.JavaClass.GetExternalStorageDirectory(); Result := JStringToString(EmulStorage.getPath); AFile := EmulStorage.getParentFile(); repeat RootDir := AFile; AFile := AFile.getParentFile(); until (AFile = nil) or AFile.getPath().equals(StringToJString('/')); if RootDir <> nil then begin FileDirs := RootDir.listFiles(); <<<<<<<----- FileDirs ist hier Nil! for i := 0 to FileDirs.Length - 1 do begin AFile := FileDirs[i]; isMounted := TJEnvironment.JavaClass.getStorageState(AFile); if isMounted <> nil then if TJEnvironment.JavaClass.MEDIA_MOUNTED.equals(isMounted) then Exit(JStringToString(AFile.getPath())); end; end; end; Fehlt da noch etwas? Ciao Stefan |
AW: SD-Karte ermitteln schlägt in Delphi 10.4 fehl
Wenn ich deinen Code richtig interpretiere, geht es dir um Android, richtig? Da kommt es dann auch noch auf die Android-Version an. Mittlerweile benötigt man hier den requestLegacyExternalStorage-Eintrag in AndroidManifest_template.xml:
Code:
Sonst hast du schon mal keine Berechtigung andere Verzeichnisse abzufragen.
<?xml version="1.0" encoding="utf-8"?>
<!-- BEGIN_INCLUDE(manifest) --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="%package%" android:versionCode="%versionCode%" android:versionName="%versionName%" android:installLocation="%installLocation%"> <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" /> <%uses-permission%> <uses-feature android:glEsVersion="0x00020000" android:required="True"/> <application android:persistent="%persistent%" android:restoreAnyVersion="%restoreAnyVersion%" android:label="%label%" android:debuggable="%debuggable%" android:largeHeap="%largeHeap%" android:icon="%icon%" android:theme="%theme%" android:hardwareAccelerated="%hardwareAccelerated%" android:resizeableActivity="false" android:requestLegacyExternalStorage="true"> Ab Android 11 soll dies nochmals komplizierter werden, konnte ich aber bisher noch nicht verifizieren, bei meinem Samsung S10 mit Android 11 sieht alles noch gut aus. Ansonsten ermittele ich die SD-Karten-Verzeichnisse für Android gänzlich anders, also falls es weiterhin nicht geht, kurze Info, dann suche ich den Code dafür auch noch raus. |
AW: SD-Karte ermitteln schlägt in Delphi 10.4 fehl
Ja, es geht um Android, speziell Android 11 wo ich bisher problemlos ein Verzeichnis auf der SD-Karte anlegen und nutzen konnte.
Das Device, welches ich hier nutze, ist ein Galaxy S10+ und hatte gestern ein Systemupdate bekommen. Die XML Erweiterung hat nichts geändert... Ciao Stefan |
AW: SD-Karte ermitteln schlägt in Delphi 10.4 fehl
Ich habe es mir auch nochmals angeschaut. Unter Android-11 läuft meine Suche auch nicht mehr. Ist einem geänderten Berechtigungskonzept von Android 11 geschuldet. Dort greift der obenstehende XML-Eintrag nicht mehr.
Man hat nur Zugriff auf zur App passende Verzeichnisse, z.B. interner Speicher: /storage/emulated/0/Android/data/[AppName] externer Speicher: /storage/0000-0000/Android/data/[AppName] nur das die 0000-0000 x beliebige Zahlen sein können (so ist es zumindest bei Samsung). Wie man dies jetzt löst, ist mir auch noch unklar. |
AW: SD-Karte ermitteln schlägt in Delphi 10.4 fehl
Mist, danke trotzdem, nur diese Antwort habe ich leider nicht erwartet!
Ciao Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz