Здравствуйте, в Delphi 12.1 пользователю необходимо дать разрешение на запись и чтение файла.Python

Программы на Python
Anonymous
Здравствуйте, в Delphi 12.1 пользователю необходимо дать разрешение на запись и чтение файла.

Сообщение Anonymous »

В Delphi 12.1 пользователю необходимо предоставить разрешение на запись и чтение файла. Этот код без проблем работал на Delphi 10.4. А на Delphi 12.1 при открытии приложения не появляется окно дать разрешение, а сразу переходит к процедуре PermissionRequestResult и при проверке соответственно, так как разрешение не дано, выводит окно "Необходимые разрешения не получены" . Можете ли вы сказать мне, что не так с кодом?
unit Unit1;

interface

uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,System.Permissions,
Androidapi.Jni.Os,Fmx.DialogService,
Androidapi.Helpers;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure PermissionRequestResult(Sender: TObject;const APermissions: TClassicStringDynArray;const AGrantResults: TClassicPermissionStatusDynArray);
procedure ExplainReason(Sender: TObject; const APermissions: TClassicStringDynArray; const APostRationaleProc: TProc);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
FPermissionWrite: string;
FPermissionRead: string;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.ExplainReason(Sender: TObject;
const APermissions: TClassicStringDynArray; const APostRationaleProc: TProc);
begin
TDialogService.ShowMessage('Приложению нужен доступ к карте памяти для таких то целей',
procedure(const AResult: TModalResult)
begin
APostRationaleProc;
end)
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
FPermissionWrite := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE);
FPermissionRead := JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
PermissionsService.RequestPermissions([FPermissionWrite, FPermissionRead], PermissionRequestResult, ExplainReason);
end;

procedure TForm1.PermissionRequestResult(Sender: TObject;
const APermissions: TClassicStringDynArray;
const AGrantResults: TClassicPermissionStatusDynArray);
begin
if (Length(AGrantResults) = 2) and (AGrantResults[0] = TPermissionStatus.Granted) and (AGrantResults[1] = TPermissionStatus.Granted) then
begin

TDialogService.ShowMessage('Разрешения получены');
end
else begin
TDialogService.ShowMessage('Требуемые разрешения не получены');

end;
end;

end.


Подробнее здесь: https://stackoverflow.com/questions/790 ... read-the-f

Вернуться в «Python»