як використовувати getSharedPreferences в android - -


78

У мене є програма, в якій я повинен здійснити дію "Вхід". У мене є такі компоненти:

  1. Ім'я користувача EditText
  2. Пароль EditText
  3. Кнопка Вхід
  4. Кнопка Скасувати

Я хочу, щоб моя програма запам'ятовувала дані для входу користувача після того, як користувач увійшов у систему, поки користувач не натисне кнопку "вийти". Я не використовую налаштування у своєму xml.

Як я можу отримати getSharedPreferences (Ім'я рядка, режим int) для роботи в моїй програмі?

Відповіді:


152

Спочатку отримайте екземпляр SharedPreferences за допомогою

SharedPreferences userDetails = context.getSharedPreferences("userdetails", MODE_PRIVATE);

Тепер для збереження значень у SharedPreferences

Editor edit = userDetails.edit();
edit.putString("username", username.getText().toString().trim());
edit.putString("password", password.getText().toString().trim());
edit.apply();

Угорі в рядках буде вказано ім’я користувача та пароль

Тепер, щоб отримати збережені значення з налаштувань, ви можете слідувати нижче рядків коду

String userName = userDetails.getString("username", "");
String password = userDetails.getString("password", "");

(ПРИМІТКА: ЗБЕРЕЖЕННЯ ПАРОЛЯ В ДОДАТКУ НЕ РЕКОМЕНДУЄТЬСЯ. ВИ ПОВИННІ ШИФРУВАТИ ПАРОЛЬ ПЕРЕД ПЕРЕД ЗБЕРІГАННЯМ або ПРОПУСКОМ ЗБЕРІГАННЯ ПАРОЛЯ)


1
ммм .. у мене є інше питання .. як я можу відновити уподобання?
CMA

18
застереження - не зберігайте паролі для таких чутливих речей, як це, якщо вони не зашифровані.
Edward Q. Bridges

1
@eqbridges. Пляма на! Налаштування зберігаються у файлі xml на пристрої. API просто пише та читає з файлу. Не зберігайте паролі.
фашолайд

15
//Set Preference
SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
SharedPreferences.Editor prefsEditor;  
prefsEditor = myPrefs.edit();  
//strVersionName->Any value to be stored  
prefsEditor.putString("STOREDVALUE", strVersionName);  
prefsEditor.commit();

//Get Preferenece  
SharedPreferences myPrefs;    
myPrefs = getSharedPreferences("myPrefs", MODE_WORLD_READABLE);  
String StoredValue=myPrefs.getString("STOREDVALUE", "");

Спробуйте це..


11
MODE_WORLD_READABLE не є правильним вибором для зберігання конфіденційних даних, і він також застарів на рівні API 17.
Тамаш Шінчак

Наразі MODE_WORLD_READABLE застаріло!
Jorgesys

2

Після багатого читання працювало лише це: У класі встановити спільні налаштування:

 SharedPreferences userDetails = getApplicationContext().getSharedPreferences("test", MODE_PRIVATE);
                    SharedPreferences.Editor edit = userDetails.edit();
                    edit.clear();
                    edit.putString("test1", "1");
                    edit.putString("test2", "2");
                    edit.commit();

У AlarmReciever:

SharedPreferences userDetails = context.getSharedPreferences("test", Context.MODE_PRIVATE);
    String test1 = userDetails.getString("test1", "");
    String test2 = userDetails.getString("test2", "");

0

Якщо хтось користувався цим:

val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)

PreferenceManager тепер припинено, переробляючи це:

val sharedPreferences = context.getSharedPreferences(context.packageName + "_preferences", Context.MODE_PRIVATE)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.