Mon code est:
final String eulaKey = "mykey";
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
boolean hasBeenShown = prefs.getBoolean(eulaKey, false);
Renvoie toujours des valeurs différentes selon la version du système d'exploitation. Testé en 2.2, 2.3.4, 3.2, 4.0.3 - renvoie la valeur correcte. Mais pour le périphérique lame Zte avec 2.3.7 avec CianogenMod 7.1 - le résultat est toujours faux. Je suppose que la valeur par défaut de getBoolean.
Voici l'écriture de code booléen:
final String eulaKey = "mykey";
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(eulaKey, true);
editor.commit();
Quelqu'un a-t-il une idée?
Mise à jour: comparaison de mon code actuel avec ma version précédente de code - il n'y a pas de différence de code. La seule différence est dans le manifeste: le code fonctionne Ok avec minVersion = 8 et targetVersion = 8 Maintenant, je compile avec minversion = 8 et target = 13/à cause d'Admob /. Peut-être que certaines API ont changé, mais je n'ai rien trouvé là-dessus.
SOLUTION: -Le démarrage de l'application à partir du raccourci et du menu me donne différentes DefaultSharedPreferences. Après avoir supprimé DefaultSharedPreferences de mon code - cela fonctionne parfaitement. Je ne peux pas simplement dire: les gens ne font pas de raccourcis, j'ai donc dû changer de code.
Essayez-le de cette façon:
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();
dans ce cas, vous pouvez spécifier votre propre nom de fichier de préférences (myAppPrefs) et contrôler la persmission d'accès à celui-ci. Les autres modes de fonctionnement incluent: