usuario1730789
SharedPreferences
en Android son locales para una aplicación y no se comparten entre diferentes aplicaciones. Cuando yo digo
SharedPreferences preferences = getSharedPreferences(PREF_NAME, MODE_WORLD_READABLE);
¿Qué significa hacer estas preferencias? MODE_WORLD_READABLE
, MODE_WORLD_WRITABLE
o
MODE_PRIVATE
?
Adrián C.
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 API 17, el MODE_WORLD_READABLE
y MODE_WORLD_WRITEABLE
están en desuso:
Esta constante quedó obsoleta en el nivel de API 17.
La creación de archivos de lectura mundial es muy peligrosa y es probable que provoque agujeros de seguridad en las aplicaciones. Se desaconseja encarecidamente; en cambio, las aplicaciones deben usar un mecanismo más formal para las interacciones, comoContentProvider
,BroadcastReceiver
yService
. No hay garantías de que este modo de acceso permanecerá en un archivo, como cuando pasa por una copia de seguridad y restauración.
Anup Cowkur
Las preferencias se almacenan en el sistema de archivos. El modo define quién tiene acceso a las preferencias de su aplicación.
En lenguaje sencillo:
MODE_PRIVATE
es el modo de funcionamiento de las preferencias. Es el modo predeterminado y significa que solo la aplicación que llama accederá al archivo creado.- 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 usar el modo predeterminado, sin especificar el nombre del archivo.
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
Praful Bhatnagar
Las preferencias compartidas también se guardan en un archivo en el sistema de archivos. Y estos modos definen si otra aplicación tendría derecho a leer la preferencia de fragmento en el archivo o no.
MODE_PRIVATE
significa que solo la aplicación que crea la preferencia compartida puede leer y escribir la preferencia
MODE_WORLD_READABLE
significa que otra aplicación también puede leer estas preferencias usando la API de preferencias compartidas pero no puede escribir el valor en este archivo de preferencias
MODE_WORLD_WRITEABLE
significa que otra aplicación también puede leer y escribir en el archivo de preferencias usando la API de preferencias compartidas
El siguiente enlace también tiene una buena explicación y un 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
MODE_PRIVATE significa el archivo que creó su aplicación para almacenar datos de preferencias de la aplicación a los que solo puede acceder su propia aplicación.
Ninguna otra aplicación podría acceder a ese archivo.