1

Вопрос в том, как я могу хранить большой объем данных (несколько сотен мегабайт и более) и одновременно сохранять его доступным только для моего приложения?Как хранить конфиденциальный объем данных в Android?

Внутреннее хранилище, как я выяснил, ограничен и его размер зависит от модели устройства. Достаточно ли для хранения больших объемов данных? Могу ли я хранить 500 МБ и более во внутреннем хранилище?

Альтернативой является использование внешнего хранилища. Как я знаю, внешнее хранилище не ограничивает приложение и может использовать все внешнее хранилище. Однако данные становятся доступными для пользователей и других приложений, и это неприемлемо в моем случае. Есть ли способ сделать данные, хранящиеся во внешнем хранилище, приватными, как если бы он хранился во внутреннем?

ответ

1

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

только на Android 1.x/2.x. На огромные большинство устройств Android 3.0+, внутреннее и внешнее хранилище находятся на одном разделе и, следовательно, имеют одинаковое пространство.

Могу ли я хранить 500 МБ и более во внутренней памяти?

Возможно, на Android 3.0+. У пользователя может быть не 500MB бесплатно, но это не ограничение внутреннего хранилища, а просто ограничение «хранения» в целом.

Есть ли способ сделать данные, хранящиеся во внешнем хранилище, частными, как если бы он хранился во внутреннем?

Не совсем. Например, вы не можете запретить пользователям или другим приложениям удалять эти файлы. Вы можете использовать библиотеку Facebook Conceal для шифрования файлов на внешнем хранилище с помощью сгенерированного ключа шифрования, хранящегося на внутреннем хранилище, чтобы пользователи или другие приложения не могли изменять содержимое файлов (кроме как просто их развращать).Однако, опять же, это будет иметь значение только в том случае, если вы все еще поддерживаете Android 1.x/2.x; на Android 3.0+, просто используйте внутреннее хранилище.

0

Учитывая, что вы сдерживаете вас, вы действительно можете использовать два возможных подхода.

  • использовать внутреннее хранилище, но не забудьте сохранить свободную память и всякий раз, когда устройство не может справиться с этим, нужно сообщить своим пользователям, что их устройство не может запустить ваше приложение.
  • использует внешнюю память и строит на ней хорошее шифрование, поэтому даже если кто-то еще получит файлы, фактические данные на них будут бессмысленными без надлежащего механизма дешифрования.

какой вариант выбрать товар решение.

0

Вы можете использовать getExternalFilesDir(), чтобы запретить поставщику содержимого медиа-магазина считывать файлы приложения из внешнего хранилища. Но я думаю, что любое другое приложение с тем же разрешением от READ_EXTERNAL_STORAGE может получить доступ к файлам. Единственный способ - использовать внутреннюю память.

Я не уверен, какие файлы вы хотите сохранить. Если количество файлов меньше, вы можете подумать об использовании базы данных, хотя это должно нарушать принцип ACID. В качестве альтернативы вы можете думать об ограничении с помощью поставщиков контента.

Смежные вопросы