169 похожих чатов

Всем ку. Недавно начал заниматься разработкой и появился

вопрос, я реализовал Room у себя в проекте, но все примеры в инете заточены только на динамическое заполнение бд, у меня же есть готовая бд, которая должна храниться на телефоне, и вот, наконец-то вопрос, для того чтобы получать из неë данные нужно получить permission от пользователя и потом путь к папке, но все примеры опять же на метод getExternalStorageState, который на sdk 29 deprecated и как же мне получить путь к папке???
И ещё доп. вопрос, как лучше реализовать вставку фотографий в recyclerview? Хранить их на телефоне и получать permission на gallery , или есть другой способ хранить большое количество фоток( без drawble и assets). Я пытался понять что-нибудь конкретное про scoped storage, но примеров тоже для себя понятных не нашел.
Пишу на java

15 ответов

9 просмотров

Ты можешь хранить это все во внутренней папке приложения. Тебе не нужны пермишены для доступа к ней.

Coolmanakov-Denis Автор вопроса

А как путь к ней получить?

Coolmanakov-Denis Автор вопроса

Эта папка и есть scoped storage?

getFilesDir и getExternalFilesDir. Первая получает путь из внутреннего хранилища (эта папка недоступна другим приложениям), вторая из внешнего (до 11 андроида она доступна другим приложениям)

Для кэша соответственно getCacheDir и getExtenalCacheDir. Если юзер очистит кэш твоего приложения, то в этих папках все удалится. Удобно их использовать для временных файлов скачанных из интернета

Вообще зависит от того что делает твое приложение. Базу лучше хранить в getFilesDir. Картинки если грузишь из интернета то в кеше. Если ты хочешь сделать доступ к фоткам на телефоне (типа галереи) то тут нужно MediaStore использовать

Coolmanakov-Denis Автор вопроса

А для того чтобы поместить картинки и бд в эту папку, есть готовые методы или через stream делать?

Во внутренние папки приложения можно любым файловым API записывать. А на сд карту в 10-11 Андроиде ограничили.

То есть в эти можешь просто через стрим писать, да.

Coolmanakov-Denis Автор вопроса

Спасибо, вроде как все понятно стало, сегодня попробую

Если база прям в APK идёт (то есть заполнена с самого начала), то её можно в ассеты положить

Coolmanakov-Denis Автор вопроса

Я так и планировал

Есть документация room prepopulate database

Coolmanakov-Denis Автор вопроса

На этапе разработки нет разницы как поместить файл с бд в папку приложения ручками или createfromasset()

Coolmanakov-Denis Автор вопроса

Чтобы использовать готовую бд нужно использовать метод createFromFile(), которая на вход принимаем путь файла

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта