вопрос, я реализовал Room у себя в проекте, но все примеры в инете заточены только на динамическое заполнение бд, у меня же есть готовая бд, которая должна храниться на телефоне, и вот, наконец-то вопрос, для того чтобы получать из неë данные нужно получить permission от пользователя и потом путь к папке, но все примеры опять же на метод getExternalStorageState, который на sdk 29 deprecated и как же мне получить путь к папке???
И ещё доп. вопрос, как лучше реализовать вставку фотографий в recyclerview? Хранить их на телефоне и получать permission на gallery , или есть другой способ хранить большое количество фоток( без drawble и assets). Я пытался понять что-нибудь конкретное про scoped storage, но примеров тоже для себя понятных не нашел.
Пишу на java
Ты можешь хранить это все во внутренней папке приложения. Тебе не нужны пермишены для доступа к ней.
А как путь к ней получить?
Эта папка и есть scoped storage?
getFilesDir и getExternalFilesDir. Первая получает путь из внутреннего хранилища (эта папка недоступна другим приложениям), вторая из внешнего (до 11 андроида она доступна другим приложениям)
Для кэша соответственно getCacheDir и getExtenalCacheDir. Если юзер очистит кэш твоего приложения, то в этих папках все удалится. Удобно их использовать для временных файлов скачанных из интернета
Вообще зависит от того что делает твое приложение. Базу лучше хранить в getFilesDir. Картинки если грузишь из интернета то в кеше. Если ты хочешь сделать доступ к фоткам на телефоне (типа галереи) то тут нужно MediaStore использовать
А для того чтобы поместить картинки и бд в эту папку, есть готовые методы или через stream делать?
Во внутренние папки приложения можно любым файловым API записывать. А на сд карту в 10-11 Андроиде ограничили.
То есть в эти можешь просто через стрим писать, да.
Спасибо, вроде как все понятно стало, сегодня попробую
Если база прям в APK идёт (то есть заполнена с самого начала), то её можно в ассеты положить
Я так и планировал
Есть документация room prepopulate database
На этапе разработки нет разницы как поместить файл с бд в папку приложения ручками или createfromasset()
Чтобы использовать готовую бд нужно использовать метод createFromFile(), которая на вход принимаем путь файла
Обсуждают сегодня