Я создал класс Preference Utils, который использую для хранения, извлечения и обновления значения общего предпочтения для моего приложения.
PreferenceUtils:
private static final String USER_PREFS_NAME = "MySharedPreference";
private static final String PREF_IS_PERM_READ = "is_PERM_READ";
public static void setPermissionScreenAccepted(Context context, boolean isRead)
{
SharedPreferences.Editor editor = context.getSharedPreferences(USER_PREFS_NAME,Context.MODE_PRIVATE).edit();
editor.putBoolean(PREF_IS_PERM_READ, isRead);
editor.apply();
}
public static boolean isPermissionScreenAccepted(Context context)
{
SharedPreferences sp = context.getSharedPreferences(USER_PREFS_NAME, Context.MODE_PRIVATE);
return sp.getBoolean(PREF_IS_PERM_READ, false);
}
Я создал действие, в котором подробно описаны Условия, которые пользователь должен принять, прежде чем перейти к основному действию. Теперь, когда Пользователь входит в систему, я проверяю, принял ли он уже Условия использования, если да, он сразу переходит к основному действию, если нет, он отправляется к действию Условий.
Но даже если пользователь принял T & C, при вызове метода isPermissionAccepted он всегда возвращает false.
В действии Условий и положений при нажатии кнопки «Принять» я называю это:
PreferenceUtils.setPermissionScreenAccepted(TermsandConditions.this, true);
В активности входа:
boolean perm_screen_accepted;
perm_screen_accepted = PreferenceUtils.isPermissionScreenAccepted(LoginActivity.this);
System.out.println("Value in shared preference:" +perm_screen_accepted);
Значение, которое я получаю в активности входа, всегда ложно. Я использую тот же класс PreferenceUtils для поддержания других состояний, например, вошел ли пользователь уже в систему, хранит данные пользователя и другие настройки, он работает нормально. Но это не работает, может кто-нибудь указать, что я делаю не так?
Спасибо.