我的代码如下:
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中测试,返回正确的值。但是对于装有CianogenMod 7.1的2.3.7版本的Zte blade设备,结果始终为false。我认为这是getBoolean的默认值。
以下是编写boolean的代码:
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,但我没有找到任何信息。
解决��案: -从快捷方式和菜单启动应用程序会给我不同的DefaultSharedPreferences。删除代码中的DefaultSharedPreferences后,它就可以正常工作了。我不能说:人们不要创建快捷方式,所以我必须更改代码。