2011-05-10 28 views
63

Tengo una aplicación en la que tengo que implementar una actividad de "Inicio de sesión". Tengo estos componentes:cómo usar getSharedPreferences en android

  1. EditarTexto nombre de usuario
  2. EditarTexto contraseña
  3. botón de acceso
  4. botón Cancelar

Quiero que mi solicitud para recordar los datos de acceso del usuario una vez que el usuario ha iniciado sesión hasta que el usuario presione el botón "cerrar sesión". No estoy usando preferencias en mi xml.

¿Cómo consigo los getSharedPreferences (String nombre, int modo) para trabajar en mi solicitud?

Respuesta

119

En primer lugar obtener la instancia de SharedPreferences usando

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

ahora para guardar los valores en los SharedPreferences

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

Por encima de las líneas va a escribir nombre de usuario y contraseña a la preferencia

Ahora a recuperar valores guardados de preferencia, puede seguir a continuación las líneas de código

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

(Nota: Guardar contraseña en el APP no es recomendable. Debería bien cifrar la contraseña antes de guardar o saltarse el guardar la contraseña)

+1

umm .. tengo otra que stion .. ¿cómo puedo restaurar las preferencias? – CMA

+8

he editado mi respuesta – Dharmendra

+0

muchas gracias! ¡Realmente ayudas mucho! (: – CMA

12
//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", ""); 

Prueba esto ..

+8

MODE_WORLD_READABLE no es la elección correcta para el almacenamiento de datos sensibles, y también llegar a ser obsoleto en el nivel API 17 . –

+0

http://stackoverflow.com/questions/35328936/why-is-this-value-null –

+0

MODE_WORLD_READABLE actualmente está en desuso! – Jorgesys

1

Después de leer todo mucho, sólo que esta trabajado: En la clase para establecer las preferencias compartidas:

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

En AlarmReciever:

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