wie man getSharedPreferences in Android verwendet

78

Ich habe eine Anwendung, in der ich eine "Login" -Aktivität implementieren muss. Ich habe diese Komponenten:

  1. EditText Benutzername
  2. EditText Passwort
  3. Button Login
  4. Schaltfläche Abbrechen

Ich möchte, dass meine Anwendung die Anmeldedaten des Benutzers speichert, sobald sich der Benutzer angemeldet hat, bis der Benutzer auf die Schaltfläche "Abmelden" klicken würde. Ich verwende keine Einstellungen in meiner XML.

Wie kann ich die getSharedPreferences (String name, int mode) in meiner Anwendung zum Laufen bringen?

CMA
quelle

Antworten:

152

Holen Sie sich zuerst die Instanz von SharedPreferences mit

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

Speichern Sie nun die Werte in den SharedPreferences

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

In den obigen Zeilen werden Benutzername und Passwort nach Belieben angegeben

Um gespeicherte Werte aus den Einstellungen abzurufen, können Sie den folgenden Codezeilen folgen

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

(HINWEIS: Das Speichern des Passworts in der App wird nicht empfohlen. Sie sollten das Passwort entweder verschlüsseln, bevor Sie das Passwort speichern oder überspringen.)

Dharmendra
quelle
1
ähm .. ich habe noch eine frage .. wie kann ich die einstellungen wiederherstellen?
CMA
18
Vorsichtsmaßnahme - Speichern Sie keine Passwörter für sensible Dinge wie diese, es sei denn, sie sind verschlüsselt.
Edward Q. Bridges
1
@eqbridges. Genau richtig! Die Einstellungen werden in einer XML-Datei auf dem Gerät gespeichert. Die API schreibt und liest einfach aus der Datei. Achten Sie darauf, keine Passwörter zu speichern.
Fasholaide
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", "");

Versuche dies..

Karthik
quelle
11
MODE_WORLD_READABLE ist nicht die richtige Wahl zum Speichern vertraulicher Daten und wird auch in API-Level 17 veraltet.
Tamás Szincsák
MODE_WORLD_READABLE ist derzeit veraltet!
Jorgesys
2

Nach vielem Lesen funktionierte nur Folgendes: In der Klasse, um gemeinsame Einstellungen festzulegen:

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

In AlarmReciever:

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

Wenn jemand dies benutzt hat:

val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)

PreferenceManager ist jetzt beraubt, Refactor dazu:

val sharedPreferences = context.getSharedPreferences(context.packageName + "_preferences", Context.MODE_PRIVATE)
norbDEV
quelle