Здравствуйте, на 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;constAPermissions:TClassicStringDynArray;constAGrantResults:TClassicPermissionStatusDynArray);
procedure ExplainReason(Sender:TObject;constAPermissions:TClassicStringDynArray;constAPostRationaleProc: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;constAPermissions:TClassicStringDynArray;constAPostRationaleProc:TProc);
begin
TDialogService.ShowMessage('Приложению нужен доступ к карте памяти для таких то целей',
procedure(constAResult: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;constAPermissions:TClassicStringDynArray;constAGrantResults: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.
Вопрос
Letter
Здравствуйте, на Delphi 12.1 нужно что бы пользователь дал разрешение на запись и чтение файла. Данный код работал без проблем на Delphi 10.4. А на Delphi 12.1 при открытии приложения не появляется окно что бы дать разрешение, а сразу перескакивает на процедуру PermissionRequestResult и при проверки соответственно так как разрешение не дано выводит окно "Требуемые разрешения не получены". Подскажите что не так в коде?
Ссылка на комментарий
3 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.