Android SharedPreferences con MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITABLE

SharedPreferences en Android son locales para una aplicación, y no compartidos entre diferentes aplicaciones. Cuando yo digo

 SharedPreferences preferences = getSharedPreferences(PREF_NAME, MODE_WORLD_READABLE); 

¿Qué significa que estas preferencias MODE_WORLD_READABLE , MODE_WORLD_WRITABLE o MODE_PRIVATE ?

getSharedPreferences(String name, int mode) se explica aquí

 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. 

Más información aquí

Editar A partir de la API 17, el MODE_WORLD_READABLE y el MODE_WORLD_WRITEABLE están obsoletos:

Esta constante fue obsoleta en API nivel 17.
Crear archivos legibles en todo el mundo es muy peligroso y es probable que cause fallos de seguridad en las aplicaciones. Está fuertemente desalentado; En su lugar, las aplicaciones deberían utilizar un mecanismo más formal para interacciones como ContentProvider , BroadcastReceiver y Service . No hay garantías de que este modo de acceso permanezca en un archivo, como cuando pasa por una copia de seguridad y restauración.

Las preferencias compartidas también se guardan en el archivo del sistema de archivos. Y estos modos definen si otra aplicación tendría derecho a leer la preferencia del fragmento en el archivo o no.

MODE_PRIVATE significa que sólo la aplicación que crea la preferencia compartida puede leer escribe la preferencia

MODE_WORLD_READABLE significa que otra aplicación también puede leer estas preferencias usando la API de preferencia compartida, pero no puede wright en este archivo de preferencias

MODE_WORLD_WRITEABLE significa que otra aplicación también puede leer y escribir en el archivo de preferencias utilizando la API de preferencia compartida

El siguiente enlace también tiene una buena explicación y ejemplo de código para explicar los MODOS:

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

Las preferencias se almacenan en el sistema de archivos. El modo define quién tiene acceso a las preferencias de la aplicación.

En lenguaje sencillo:

  • MODE_PRIVATE es el modo de funcionamiento de las preferencias. Es el modo predeterminado y significa que sólo se accederá al archivo creado por la aplicación que llama.
  • En MODE_WORLD_READABLE otra aplicación puede leer el archivo creado pero no puede modificarlo.
  • En caso de MODE_WORLD_WRITEABLE otras aplicaciones también tienen permisos de escritura para el archivo creado.

La forma recomendada es utilizar el modo predeterminado, sin especificar el nombre del archivo

 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 

MODE_PRIVATE significa el archivo creado por tu aplicación para almacenar datos de preferencias de aplicaciones que sólo pueden ser accesibles para tu propia aplicación.

Ninguna otra aplicación podría acceder a ese archivo.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.