Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как реализовать выбор файлов в приложениях FireMonkey для Android и iOS

Delphi , Программа и Интерфейс , Диалоги и Фреймы

Вопрос выбора файлов в мобильных приложениях на базе FireMonkey может быть не так прост, как на десктопных системах. Разработчики, работающие с Windows, часто используют TOpenDialog, который не поддерживается на Android и iOS. В этой статье мы рассмотрим, как можно реализовать функционал выбора файлов в мобильных приложениях FireMonkey, используя версию Delphi 10.3.

Проблема

На десктопных системах выбор файлов можно реализовать с помощью компонента TOpenDialog, который является стандартным инструментом в Delphi. Однако, при разработке мобильных приложений на FireMonkey, этот компонент не доступен. Большинство обсуждаемых решений требуют использования устаревших внешних библиотек, что делает процесс разработки более сложным и трудоемким.

Решение

Шаг 1: Использование Intent на Android

Для Android можно использовать Intent для запуска встроенного файлового менеджера. Вот пример кода, который позволяет пользователю выбрать файл:

procedure TForm1.Button1Click(Sender: TObject);
var
  IntentPicker: JIntent;
  IntentChooser: JIntent;
  Data: JString;
begin
  IntentPicker := TJIntent.Create;
  IntentPicker.ActionType := IntentActionPick;
  IntentPicker.Type := 'image/*'; // Выбор типа файлов, например, изображений
  IntentChooser := TJIntent.CreateChooser(IntentPicker, 'Выберите изображение');
  try
    if (TPlatform.OS = TOSB_Android) then
    begin
      if (TAndroidHelper.CurrentActivity.IntentSenderSendIntent(IntentChooser)) then
      begin
        Data := TJIntent.GetIntentEx(TAndroidHelper.CurrentActivity.Intent).Type;
        // Получение пути выбранного файла
        if IntentActionPick = TJIntent.GetData(Data).Action then
          // Обработка выбранного файла
          TJIntent.GetIntentEx(TAndroidHelper.CurrentActivity.Intent).ClipData.ItemAt(0).Text;
      end;
    end;
  finally
    IntentPicker.Release;
    IntentChooser.Release;
  end;
end;

Шаг 2: Выбор файлов на iOS

Для iOS разработчики могут использовать UIDocumentPickerViewController для выбора файлов. Пример кода на Object Pascal:

procedure TForm1.Button1Click(Sender: TObject);
var
  DocumentPicker: UIDocumentPickerViewController;
begin
  if TPlatform.OS in [TOSB_iOS, TOSB_tvos] then
  begin
    DocumentPicker := TUIDocumentPickerViewController.Wrap(
      UIDocumentPickerViewController.ViewControllerWithDocumentTypes(
        [UTTypeItem],
        nil
      )
    );
    DocumentPicker.Delegate := DocumentPickerController;
    DocumentPicker.AllowsMultipleSelection := False;
    // Установка представления, в котором отобразить контроллер выбора
    TViewController.Wrap(TViewController.GetViewControllerFor(Owner), DocumentPicker);
  end;
end;

type
  TDocumentPickerController = class(TInterfacedWrapper, IUIDocumentPickerControllerDelegate)
  function Controller(_controller: IUIDocumentPickerController; didPickDocumentAtURL: JBoolean; aDocURL: NSUrl; Error: NSError): JBoolean; static;
  end;

{ TDocumentPickerController }

function TDocumentPickerController.Controller(AController: IUIDocumentPickerController; DidPickDocumentAtURL: JBoolean; aDocURL: NSUrl; Error: NSError): JBoolean;
begin
  // Обработка выбранного файла
  Result := True;
end;

Подтвержденный ответ

Использование Intent на Android и UIDocumentPickerViewController на iOS предоставляет разработчикам возможность интегрировать функционал выбора файлов в их приложения, не прибегая к созданию всего с нуля.

Альтернативный ответ

Разработчики также могут рассмотреть использование внешних библиотек или компонентов, однако, учитывая устаревание многих из них, предпочтительнее использовать встроенные возможности платформ.

Заключение

Выбор файлов в мобильных приложениях на FireMonkey может быть выполнен с помощью Intent на Android и UIDocumentPickerViewController на iOS. Несмотря на то, что процесс может показаться сложным, использование примеров кода выше позволит разработчикам интегрировать необходимый функционал в свои приложения, сэкономив время и усилия на разработку с нуля.

Создано по материалам из источника по ссылке.

Вопрос связан с реализацией функции выбора файлов в мобильных приложениях FireMonkey для Android и iOS, рассматриваются методы и примеры кода для интеграции данного функционала без использования устаревших внешних библиотек.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Диалоги и Фреймы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 16:04:45/0.0036070346832275/0