AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Kann in Delphi 11.3 FMX-Android kein Verzeichnis anlegen
Thema durchsuchen
Ansicht
Themen-Optionen

Kann in Delphi 11.3 FMX-Android kein Verzeichnis anlegen

Ein Thema von dynamo · begonnen am 17. Mai 2023 · letzter Beitrag vom 17. Mai 2023
 
dynamo

Registriert seit: 21. Okt 2008
Ort: Bordesholm
37 Beiträge
 
Delphi 11 Alexandria
 
#1

Kann in Delphi 11.3 FMX-Android kein Verzeichnis anlegen

  Alt 17. Mai 2023, 09:53
Meine bisherigen Apps, die ich bis einschl. Delphi 10.4 geschrieben habe, möchte ich nun auf Delphi 11.3 migrieren. Aber da knirscht es leider mächtig im Gebälk.
Es fäng damit an, dass ich die Permissions anpassen musste (ich hoffe, dass ich das so richtig gemacht habe (s.Code). Nun habe ich Probleme damit, Verzeichnisse anzulegen. Bis einschl. Delphi 10.4 FMX habe ich das immer so gemacht und es hat funktioniert. Jetzt geht das leider nicht mehr so. Warum nicht?

Delphi-Quellcode:
// ein Beispielcode mit Permissions und Verzeichnis anlegen in D11.3
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,FMX.DialogService,system.permissions,
  FMX.Controls.Presentation, FMX.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private-Deklarationen }
    FRead,
    FWrite:string;
    procedure SetPermissions;
    procedure MakeReadWritePermissionRequestResult(Sender:TObject;const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray);
    procedure DisplayRationale(Sender: TObject; const APermissions: TClassicStringDynArray; const APostRationaleProc: TProc);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  zugriffErlaubt :boolean = false;
implementation
uses Androidapi.Helpers,
  Androidapi.JNI.JavaTypes,
  Androidapi.JNI.Os;

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject); // dies ist für mich der wichtigste Teil
var basisdir,dir,Verzeichnis: string;
begin
    basisdir := '/storage/emulated/0/';
    dir := 'testdir';
    Verzeichnis := basisdir+dir;
    showmessage('Zugriff erlaubt= '+BoolToStr(zugriffErlaubt,true)+' auf '+Verzeichnis);
// if zugriffErlaubt then
// if not System.SysUtils.directoryexists(basisdir+dir) then
      System.SysUtils.ForceDirectories(Verzeichnis); // funzt leider nicht. bis D10.4 ging's aber so. Auch mit Android 13
end;

procedure TForm1.DisplayRationale(Sender: TObject; const APermissions: TClassicStringDynArray; const APostRationaleProc: TProc);
begin
  TDialogService.ShowMessage('Berechtigung erforderlich',
    procedure(const AResult: TModalResult)
    begin
      APostRationaleProc;
    end)
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  setpermissions;
end;

procedure TForm1.SetPermissions;
begin
  if CompilerVersion <= 32 then exit;
  FRead := JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE);
  FWrite := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE);
  PermissionsService.RequestPermissions([FRead,FWrite],MakeReadWritePermissionRequestResult, DisplayRationale);
end;

procedure TForm1.MakeReadWritePermissionRequestResult(Sender:TObject;const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray);
begin
  if (Length(AGrantResults) = 2) and (AGrantResults[0] = TPermissionStatus.Granted) and (AGrantResults[1] = TPermissionStatus.Granted)
  then zugriffErlaubt := True
  else zugriffErlaubt := False;
end;
end.
Jörg

Geändert von dynamo (17. Mai 2023 um 13:13 Uhr)
  Mit Zitat antworten Zitat
 


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 18:17 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