0

В официальном сайте Android, для getPreference() метод, он говорит, что:getPreference() - доступность общего предпочтения компонентов приложения

считывают SharedPreferences объект для доступа к предпочтениям, которые , личный к этой деятельности.

И здесь (How do I get the SharedPreferences from a PreferenceActivity in Android?) говорится, что:

Эти предпочтения могут быть использованы только в рамках конкретного вида деятельности и не могут быть использованы другими компонентами приложения.

Однако в URL http://skillgun.com/android/basics/interview-questions-and-answers/paper/25 пятый вопрос,

говорят, что это не гарантирует защиту, как это будет хранится с именем Activity.

Я смущен, могут ли другие компоненты приложения (такие как деятельность, обслуживание и т. Д.) Получить доступ к общей настройке, созданной методом getPreference(). является общим предпочтением, созданным вызовом метода getPreference(), доступным только для активности при любых обстоятельствах?

+0

Эта последняя цитата - 'getPreferences()' вероятно, делегирует метод getSharedPreferences() 'с текущим именем Activity. Поскольку имя операции - это просто строка, она не защищена –

+0

@ cricket_007, почему она называется «конфиденциальной для этой деятельности» в официальном документе Android. Это приводит к недоразумению. – oiyio

ответ

0

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

Заявление об отсутствии защиты относится к тому факту, что корневые пользователи (и приложения) могут читать эти файлы с внутреннего хранилища телефона. Поэтому избегайте любой ценой, экономя конфиденциальную информацию пользователя в общих настройках. Ex. Не храните имена пользователей, пароли, личные данные и т. Д.

Используйте общие настройки для простых вещей, которые вы хотите сохранить. Если вы разрабатываете приложение для контактов, вы можете сохранить, нравится ли пользователю читать его контакты firstName LastName или LastName FirstName.

Данные такого рода очень короткие и не подвержены риску.

Если вам требуется хранить конфиденциальную информацию, сначала сначала шифруйте данные.