Android getDefaultSharedPreferences

我的代码是:

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

总是根据操作系统版本返回不同的值。 在2.2,2.3.4,3.2,4.0.3中testing – 返回正确的值。 但是对于使用CianogenMod 7.1的2.3.7设备Zte刀片 – 结果总是错误的。 我认为getBoolean的默认值。

这里是代码写作布尔:

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

有人有什么想法吗?

更新:比较我目前的代码与我以前版本的代码 – 代码没有区别。 唯一的区别是在清单:代码工程好与minVersion = 8和targetVersion = 8现在我编译minversion = 8和target = 13 /因为Admob /。 也许有些API改变了,但是我没有发现任何东西。

解决scheme:从快捷方式和菜单启动应用程序给我不同的DefaultSharedPreferences。 从我的代码中删除DefaultSharedPreferences之后 – 它完美的工作。 我不能说:人们不做捷径,所以我不得不改变代码。

试试这个方法:

 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(); 

在这种情况下,您可以指定自己的首选项文件名(myAppPrefs),并可以控制对其的访问权限。 其他操作模式包括:

  • MODE_WORLD_READABLE
  • MODE_WORLD_WRITEABLE
  • MODE_MULTI_PROCESS