30+? В мануалах "тут клеить, тут не клеить, а тут я рыбу заворачивал...".
File(path, "test").write("test")
Чему должен быть равен path, что бы записать например в Download? И другие приложения могли это прочитать.
Если вы нацеливаетесь на Android 10 или выше, установите для параметра requestLegacyExternalStorage значение true в файле манифеста вашего приложения
А чему должен быть path равен?
Что бы шпионское приложение-фонарик не потырило все файлики с секретными рецептыми крабсбургеров
В Android Q прямой доступ к файлам по умолчанию отключен для приложений за пределами их личных папок. Вот несколько стратегий, которые вы можете использовать в своем случае: Используйте опцию manifest, requestLegacyExternalStorageчтобы сохранить старое поведение, но оно больше не будет работать с Android R, так что это действительно краткосрочное решение; Сохраните файлы с помощью getExternalFilesDir()метода. Это ваша личная папка, другие приложения могут получить доступ к этим файлам, только если у них есть READ_EXTERNAL_STORAGEразрешение. В этом случае было бы хорошо использовать FileProviderдля предоставления доступа другим приложениям к вашим файлам. Используйте метод getPrimaryStorageVolume().createOpenDocumentTreeIntent()class, StorageManagerчтобы запросить доступ к внешнему первичному тому. В этом случае вам нужно согласие пользователя, и вы все равно не сможете использовать Fileapi напрямую, но с DocumentFileклассом у вас очень похожий интерфейс, так что это решение, более близкое к старому поведению. Он работает, если вам нужно выполнять операции на переднем и заднем плане, то есть без взаимодействия с пользователем, за исключением первого взаимодействия с запросом разрешения. Я связываю библиотеку Flipper для пункта 3, она помогает управлять файлами, как в старых версиях Android.
Спасибо. Буду разбираться.
Велосипедисты. Есть же обычные Линукс флаги доступа.
Обсуждают сегодня