Обновлена серия статей на тему использования Uses Permissions.
Uses Permissions: Теория
Uses Permissions: Добавляем метод onRequestPermissionsResult в приложение (для Delphi 10.1/10.2)
Uses Permissions: Практика (для Delphi 10.3)
Автор: Андрей Ефимов
Видео весьма интересные, поэтому пожалуйста не удаляйте тему. Думаю, что субтитры на английском языке решат проблему озвучки видео, и мы, русскоязычные разработчики сможем в полной мере оценить труд турецкого разработчика.
вот кусок кода "вырванный" из проекта (написано благодаря ссылке ярослава выше- спасибо):
MimeType = image/* - для картинок. если что не так, комментируйте.
type
TDialog = class
private
FProc: TProc<string>;
procedure ResultCallback(const Sender: TObject; const M: TMessage);
public
constructor Create;
destructor Destroy; override;
procedure Show(const MimeType: string; Proc: TProc<string>);
end;
constructor TDialog.Create;
begin
TMessageManager.DefaultManager.SubscribeToMessage(TMessageResultNotification, ResultCallback);
end;
destructor TDialog.Destroy;
begin
TMessageManager.DefaultManager.Unsubscribe(TMessageResultNotification, ResultCallback);
end;
procedure TDialog.ResultCallback(const Sender: TObject; const M: TMessage);
var FilePath: string;
begin
if TMessageResultNotification(M).RequestCode = 5 then
if TMessageResultNotification(M).ResultCode = TJActivity.JavaClass.RESULT_OK then
begin
FilePath:=JStringToString(TMessageResultNotification(M).Value.getData.getPath);
FProc(FilePath);
end;
Free;
end;
procedure TDialog.Show(const MimeType: string; Proc: TProc<string>);
var
Intent: JIntent;
begin
FProc:=Proc;
Intent:=TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_PICK);
Intent.setType(StringToJString(MimeType));
MainActivity.startActivityForResult(Intent,5);
end;
procedure OpenFileDialog(const MimeType: string; Proc: TProc<string>);
begin
RequestPermissionsExternalStorage(
procedure(Granted: Boolean)
begin
if Granted then TDialog.Create.Show(MimeType,Proc);
end);
end;