Intereting Posts

Android getDefaultSharedPreferences

Мой код:

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

Всегда возвращает разные значения в зависимости от версии os. Протестировано в 2.2, 2.3.4, 3.2, 4.0.3 – возвращает правильное значение. Но для устройства Zte blade с 2.3.7 с CianogenMod 7.1 – результат всегда ложный. Я предполагаю значение по умолчанию для getBoolean.

Здесь написано код boolean:

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

Кто-нибудь знает?

Обновление: сравнение моего текущего кода с моей предыдущей версией кода – нет никакой разницы в коде. В манифесте только различие: код работает Ok с minVersion = 8 и targetVersion = 8 Теперь я компилирую с minversion = 8 и target = 13 / из-за Admob /. Возможно, некоторые API изменились, но я ничего не нашел по этому поводу.

РЕШЕНИЕ: запуск приложения из ярлыка и из меню дает мне разные DefaultSharedPreferences. После удаления DefaultSharedPreferences из моего кода – он работает отлично. Я не могу просто сказать: люди не делают ярлыков, поэтому мне пришлось менять код.

Solutions Collecting From Web of "Android getDefaultSharedPreferences"

Попробуйте это так:

 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