Подтвердить что ты не робот

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?

4b9b3361

Ответ 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 означает файл, созданный вашим приложением для хранения данных настроек приложения, которые могут быть доступны только для вашего собственного приложения.

Ни одно другое приложение не сможет получить доступ к этому файлу.