В последнее время я просматривал документацию по доступу к файлам Android, но мне кажется, что я не могу понять, как на самом деле открыть файл, заданный в виде строки, содержащей путь к файлу, который я хотел бы открыть.
То, что я (в конечном итоге) хочу выполнить, выглядит примерно так:
- Пользователь выбирает текстовый файл определенного типа, используя Intents, получая URI для файла.Из этого я извлекаю путь (
getPath()
) и передаю эту строку в собственный код C ++. - Собственный C ++ открывает файл из строки, анализируя содержимое.
- Выполните некоторые фактическиеработать с вышеописанным.
Из того, что я нашел до сих пор, кажется, что больше невозможно открывать файлы таким образом (по крайней мере, начиная с SDK версии 26):
- Жестко закодированный путь к файлу, который, я знаю, существует, дает мне
permission denied
. - Путь, полученный от
getPath()
, вызывает ошибку No such file or directory
.
Один из обходных путей - открыть файл на стороне Java с помощью ContentResolver
, а затем передать дескриптор файла на собственную сторону.Это работает, но это проблематично: файлы могут содержать ссылки на другие файлы, которые будут открыты («включаемые файлы»), что делает такое решение ограниченным.
Просто чтобы прояснить ситуацию, эти файлы находятся локально на«USB» раздел системы Android, не связанный с самим приложением.Не так, как ресурсы / ресурсы для APK или чего-либо подобного, что, как кажется, требуют другие вопросы такого рода.
В общем, я предполагаю, что вопрос заключается в следующем: возможно ли открыть файл и, возможно, любые другие файлы?это относится, учитывая путь со стороны Java приложения?Существуют ли какие-либо требования для этого, например, запрос правильных разрешений для папок или чего-то подобного?