Android getDefaultSharedPreferences

Mi código es:

final String eulaKey = "mykey"; final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); boolean hasBeenShown = prefs.getBoolean(eulaKey, false); 

Siempre devuelve diferentes valores según la versión del sistema operativo. Probado en 2.2, 2.3.4, 3.2, 4.0.3 – devuelve el valor correcto. Pero para el dispositivo Zte blade con 2.3.7 con CianogenMod 7.1, el resultado siempre es falso. Supongo que el valor predeterminado para getBoolean.

Aquí está el código de escritura booleano:

 final String eulaKey = "mykey"; final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor editor = prefs.edit(); editor.putBoolean(eulaKey, true); editor.commit(); 

¿Alguien tiene alguna idea?

Actualización: comparando mi código actual con mi versión anterior de código, no hay diferencia en el código. La única diferencia es en manifiesto: el código funciona bien con minVersion = 8 y targetVersion = 8 Ahora estoy comstackndo con minversion = 8 y target = 13 / debido a Admob /. Tal vez algunas API cambiaron, pero no encontré nada sobre esto.

SOLUCIÓN: Iniciar la aplicación desde el acceso directo y desde el menú me da diferentes DefaultSharedPreferences. Después de eliminar DefaultSharedPreferences de mi código, funciona perfecto. No puedo decir simplemente: la gente no hace accesos directos, así que tuve que cambiar el código.

Pruébalo de esta manera:

 final String eulaKey = "mykey"; Context mContext = getApplicationContext(); mPrefs = mContext.getSharedPreferences("myAppPrefs", Context.MODE_PRIVATE); SharedPreferences.Editor editor = mPrefs.edit(); editor.putBoolean(eulaKey, true); editor.commit(); 

en ese caso puede especificar su propio nombre de archivo de preferencias (myAppPrefs) y puede controlar la persistencia de acceso a él. Otros modos de funcionamiento incluyen:

  • MODE_WORLD_READABLE
  • MODE_WORLD_WRITEABLE
  • MODE_MULTI_PROCESS