Necesito cifrar mi contraseña antes de guardarla en la base de datos local de Android. Todo funciona bien sin cifrado, tengo preferences.xml y eso. ¿Cómo puedo llamar a una función después de Cambiar el valor de preferencia (por ejemplo, contraseña)? Aquí está mi código:¿Procesar el valor de preferencia antes de guardar en Android?
public class Preferences extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
// Get the custom preference
Preference customPref = (Preference) findPreference("pass");
customPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener(){
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String crypto = SimpleCrypto.encrypt("MYSECRETKEY", newValue.toString()); // encrypt
// Here is where I'm wrong, I guess.
SharedPreferences settings = getSharedPreferences("preferences", MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("pass", crypto);
editor.commit();
});
}
}
P.S: Así, cuando cambio de contraseña, se almacena la contraseña sin cifrar.
Gracias por la idea, hice mi propia clase de extensión pero ¿cómo la implemento en mi pantalla de preferencias? Con una entrada en un archivo XML? Intenté de esta manera pero no tuve éxito. –
EvanBlack
Tiene que ser el nombre completo, por ej. –
dmon
Gracias, eso funciona como magia. :) – EvanBlack