Перейти к содержанию
Fire Monkey от А до Я
  • 0

Доступ только к медиафайлам


Letter

Вопрос

Написал программу на delphi 10.4 под андроид, в программе есть запрос на доступ к файлам чтения и записи, вот такой:

procedure TForm1.Button1Click(Sender: TObject);
begin
//запрашиваем и узнаем что дал права
PermissionsService.RequestPermissions([FPermissionWrite, FPermissionRead], PermissionRequestResult, ExplainReason);
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: TArray<string>; const AGrantResults: TArray<TPermissionStatus>);
begin
//PermissionRequestResult - это обработка ответа пользователя
  if (Length(AGrantResults) = 2) and (AGrantResults[0] = TPermissionStatus.Granted) and (AGrantResults[1] = TPermissionStatus.Granted) then
  begin

    // Ура! Пользователь дал разрешение на оба наших запроса. Выставялем глобальные флаги (к примеру) которые сигнализируют что можно читать/писать карту памти
    form1.CheckBox1.Visible:=True;
    form1.Button1.Enabled:=False;
  end
  else  begin
    TDialogService.ShowMessage('Не возможно продолжить работу, требуемые разрешения не получены');
        form1.CheckBox1.Visible:=false;
    form1.Button1.Enabled:=true;
end;
end;


procedure TForm1.ExplainReason(Sender: TObject; const APermissions: TArray<string>; const APostRationaleProc: TProc);
begin
//И ExplainReason - если пользователь сдуру не дал разрешение,
// то вам нужно объяснить ему что без этого приложение работать не будет.
  TDialogService.ShowMessage('Приложению нужен доступ к карте памяти для таких то целей, иначе приложение не сможет работать. Зайдите в настроки Андроид и дайте разрешение на доступ',
    procedure(const AResult: TModalResult)
    begin
      APostRationaleProc;
              form1.CheckBox1.Visible:=false;
    form1.Button1.Enabled:=true;
    end)
end;
end.

и все работает, но в телефоне я посмотрел права у программы, и там только доступ к медиафайлам.

Подскажите как сделать ко всем файлам доступ?

Ссылка на комментарий

Рекомендуемые сообщения

Ответов пока нет

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...