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

TPath.GetSharedDownloadsPath в Android 11 не находит файлы


Вопрос

Здравствуйте, форумчане!

Переношу приложение из Delphi 10.3 в Delphi 10.4.2 для возможности его работы на телефонах с Android 11. Столкнулся с проблемой - метод класса TDirectory.GetFiles(System.IOUtils.TPath.GetSharedDownloadsPath, '*TASK*.*' )  не находит файлы, которые находятся в памяти телефона в папке Download (под управлением Android 11), в телефоне под управлением Android 8 файлы находятся без проблем! System.IOUtils.TPath.GetSharedDownloadsPath возвращает в обоих случаях путь "/storage/emulated/0/Download". Что нужно исправить в коде программы, что бы под Android 11 файлы было видно?

С уважением, Владимир

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

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

  • 0

Дело в том, что ты выставил Target SDK 29

Теперь чтобы на Андроид 10, 11 или 12 старым способом иметь доступ к файлам надо объявить явно это в манифесте

Кажется с помощью android:requestLegacyExternalStorage="true"

но лучше погугли.

И вообще в будущем возможно... Гугл зарежут прямой доступ к файлам и придется через медиа-запросы обращаться к файлам.

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

Вот еще почитать на эту тему:

https://developer.android.com/training/data-storage/use-cases

и

https://developer.android.com/about/versions/11/privacy/storage

Цитата

After you update your app to target Android 11 (API level 30), the system ignores the requestLegacyExternalStorage attribute when your app is running on Android 11 devices, so your app must be ready to support scoped storage and to migrate app data for users on those devices

Так что после Target SDK 30 вообще старый код работать не будет... Нужно будет переписывать код работы с файлами.

Ссылка на комментарий
  • 0
2 часа назад, qz5 сказал:

Дело в том, что ты выставил Target SDK 29

Теперь чтобы на Андроид 10, 11 или 12 старым способом иметь доступ к файлам надо объявить явно это в манифесте

Кажется с помощью android:requestLegacyExternalStorage="true"

но лучше погугли.

И вообще в будущем возможно... Гугл зарежут прямой доступ к файлам и придется через медиа-запросы обращаться к файлам.

Скоро Гугл вообще будет заставлять переходить с Android на Fuchsia

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

Привет форумчане!

Не получается увидеть файлы формата '*.txt' и другие в папке '/storage/emulated/0/Documents'

При этом, однако, видны файлы '*.jpg'

Подскажите пожалуйста, на сегодняшний день в Delphi 11 уже как то можно читать файлы из хранилища?

Для доступа к файлам использую такой код:

procedure TBaseMainForm.JustAClick(Sender: TObject);
var s: string;
begin
  for s in TDirectory.GetFiles(TPath.GetSharedDocumentsPath) do
    Memo1.Lines.Add(s);
end;

Проект создан не с нуля. Код(и Memo1) просто добавлен в демо проект "c:\Users\Public\Documents\Embarcadero\Studio\22.0\Samples\Object Pascal\Multi-Device Samples\Media\PhotoEditorDemo\Android\Debug"

Изменено пользователем sneg74ok
оформление
Ссылка на комментарий

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

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

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

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

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

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

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

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

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

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