Android SharedPreferences с MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITABLE
SharedPreferences
в Android являются локальными для приложения и не используются для разных приложений. Когда я говорю
SharedPreferences preferences = getSharedPreferences(PREF_NAME, MODE_WORLD_READABLE);
Что это означает для создания этих настроек MODE_WORLD_READABLE
, MODE_WORLD_WRITABLE
или
MODE_PRIVATE
?
Ответы
Ответ 1
getSharedPreferences(String name, int mode)
объясняется здесь
MODE_PRIVATE: File creation mode: the default mode, where the created file can only be accessed by the calling application (or all applications sharing the same user ID).
MODE_WORLD_READABLE: File creation mode: allow all other applications to have read access to the created file.
MODE_WORLD_WRITEABLE : File creation mode: allow all other applications to have write access to the created file.
Подробнее здесь
Изменить
Начиная с API 17, MODE_WORLD_READABLE
и MODE_WORLD_WRITEABLE
устарели:
Эта константа была устарела в интерфейсе API уровня 17.
Создание файлов, читаемых во всем мире, очень опасно и, вероятно, вызовет проблемы с безопасностью в приложениях. Это сильно обескураживает; вместо этого приложения должны использовать более формальный механизм взаимодействия, например ContentProvider
, BroadcastReceiver
и Service
. Нет никаких гарантий того, что этот режим доступа останется в файле, например, когда он выполняет резервное копирование и восстановление.
Ответ 2
Настройки хранятся в файловой системе. Режим определяет, кто имеет доступ к вашим предпочтениям приложения.
Простыми словами:
-
MODE_PRIVATE
- это режим работы для настроек. Это режим по умолчанию и означает, что к созданному файлу будет обращаться только вызывающее приложение.
- В
MODE_WORLD_READABLE
другое приложение может читать созданный файл, но не может его изменить.
- В случае
MODE_WORLD_WRITEABLE
у других приложений также есть права на запись для созданного файла.
Рекомендуемый способ - использовать по умолчанию режим без указания имени файла
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
Ответ 3
Общие предпочтения также сохраняются в файле в файловой системе. И эти режимы определяют, будет ли другое приложение иметь право читать предпочтение осколка в файле или нет.
MODE_PRIVATE
означает, что только приложение, создающее общую настройку, может читать запись предпочтения
MODE_WORLD_READABLE
означает, что другое приложение также может читать эти предпочтения, используя общий API предпочтений, но не может вызывать значение в этом файле предпочтений
MODE_WORLD_WRITEABLE
означает, что другое приложение также может читать и записывать в файле предпочтений с использованием API общих привилегий
Следующая ссылка также содержит несколько полезных объяснений и пример кода, чтобы объяснить MODES:
http://thedevelopersinfo.com/2009/11/25/getting-sharedpreferences-from-other-application-in-android/
http://chrisrisner.com/Accessing-the-Shared-Preferences-of-a-Different-Application-in-Android
Ответ 4
MODE_PRIVATE означает файл, созданный вашим приложением для хранения данных настроек приложения, которые могут быть доступны только для вашего собственного приложения.
Ни одно другое приложение не сможет получить доступ к этому файлу.