AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung SD-Karte ermitteln schlägt in Delphi 10.4 fehl
Thema durchsuchen
Ansicht
Themen-Optionen

SD-Karte ermitteln schlägt in Delphi 10.4 fehl

Ein Thema von skoschke · begonnen am 4. Feb 2021 · letzter Beitrag vom 4. Feb 2021
Antwort Antwort
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#1

SD-Karte ermitteln schlägt in Delphi 10.4 fehl

  Alt 4. Feb 2021, 08:55
In der Funktion
Delphi-Quellcode:
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;
bekomme ich einen Laufzeitfehler an der gezeigten Stelle, alle Berechtigungen, die das Programm unter 10.3 hatte hat es in 10.4 auch bekommen...
Fehlt da noch etwas?

Ciao
Stefan
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
890 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: SD-Karte ermitteln schlägt in Delphi 10.4 fehl

  Alt 4. Feb 2021, 09:34
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:
<?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">
Sonst hast du schon mal keine Berechtigung andere Verzeichnisse abzufragen.
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.
  Mit Zitat antworten Zitat
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: SD-Karte ermitteln schlägt in Delphi 10.4 fehl

  Alt 4. Feb 2021, 09:41
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
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
890 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: SD-Karte ermitteln schlägt in Delphi 10.4 fehl

  Alt 4. Feb 2021, 13:10
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.
  Mit Zitat antworten Zitat
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: SD-Karte ermitteln schlägt in Delphi 10.4 fehl

  Alt 4. Feb 2021, 13:12
Mist, danke trotzdem, nur diese Antwort habe ich leider nicht erwartet!

Ciao
Stefan
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz