Алекс2025 Опубликовано 13 мая Опубликовано 13 мая (изменено) Всем привет! Не могу открыть файл для чтения из папки Downloads. Перед открытием проверяю наличие файла, получения прав доступа к ExternalStorage. Все Ок,все есть но при попытке загрузке в StringList приложение крашиться. При открытии через Reset все Ок)) Как побороть? Delphi 12.3, SDk 35 Изменено 13 мая пользователем Алекс2025 опечатка Цитата
0 Алекс2025 Опубликовано 13 мая Автор Опубликовано 13 мая (изменено) Если поставить в свойствах проекта галочку на пермишене "MANAGE_EXTERNAL_STORAGE" и потом, после установки приложения на устройстве, ручками дать приложению разрешение "Разрешить управление всеми файлами", то всеравно крашиться приложение при попытке открытия текстового файла всего из пару строк (несмотря на полученные разрешения) Изменено 13 мая пользователем Алекс2025 опечатка Цитата
0 Модераторы Andrey Efimov Опубликовано 13 мая Модераторы Опубликовано 13 мая Сообщите версию ОС, приложите текстовый файл, а лучше чистый проект с демонстрацией проблемы (код, текстовый файл и т.п.). Возможно, так вам смогут помочь быстрее. GASCHE 1 Цитата
0 Алекс2025 Опубликовано 13 мая Автор Опубликовано 13 мая (изменено) Android 11. Самое странное что StringList не может загрузить файл: LPath := TPath.GetSharedDownloadsPath+PathDelim +'file.txt'; StringList.LoadFromFile(LPath ); а Reset(F) построчно читает файл: LPath := TPath.GetSharedDownloadsPath+PathDelim +'file.txt'; AssignFile(F, LPath); Reset(F); while not EOF(F) do begin ReadLn(F,s); ShowMessage(s); end; CloseFile(F); Изменено 13 мая пользователем Алекс2025 опечатка Цитата
0 Модераторы Andrey Efimov Опубликовано 14 мая Модераторы Опубликовано 14 мая Если это весь код, то рекомендую ознакомиться с такой вещью как "Разрешения и запрос разрешений у пользователя" (Uses Permissions). С версии Android 6 меры безопасности усилили и продолжают это делать по сей день. Ознакомиться можно в любом месте интернета (оф. справка Студии, Андроида, множество статей в интернете, форумы (включая этот), стековерфлоу и т.д.). Вкратце, поставить галочку в настройках проекта на запрос разрешения для приложения недостаточно, необходимо написать код и в рантайме запрашивать разрешение у пользователя. В вашем случае, предполагаю, необходимо запросить разрешение "Manage external storage"(android.permission.MANAGE_EXTERNAL_STORAGE). Вот мой пример (тест на Android 11, в настройках проекта установлена галочка "Manage external storage" + выдача разрешения "Разрешить управление всеми файлами" вручную): var LPath: string; StringList: TStringList; begin LPath := TPath.Combine(TPath.GetSharedDownloadsPath, 'file1.txt'); StringList := TStringList.Create; try StringList.LoadFromFile(LPath); ShowMessage(StringList.DelimitedText); finally StringList.Free; end; end; Работает! p.s. Пожалуйста, в следующий раз прикладывайте свой чистый проект, так вы сэкономите чужое время и вырастит вероятность получить ответ быстрее . Алекс2025 и GASCHE 2 Цитата
Вопрос
Алекс2025
Всем привет! Не могу открыть файл для чтения из папки Downloads. Перед открытием проверяю наличие файла, получения прав доступа к ExternalStorage.
Все Ок,все есть но при попытке загрузке в StringList приложение крашиться. При открытии через Reset все Ок)) Как побороть? Delphi 12.3, SDk 35
Изменено пользователем Алекс2025опечатка
4 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.