Agregar una casilla de verificación "Recuérdeme"

Me gustaría tener un botón Checkbox para recordar la identificación del usuario y la contraseña. ¿Puede alguien por favor guíame en la dirección correcta en cuanto a cómo conseguirlo comenzó?

Acabo de construir esto en mi aplicación, aquí está el código básico y alguna explicación:

Básicamente la clave aquí es SharedPreferences. Configurarás un objeto SharedPreferences y almacenarás tu nombre de usuario y contraseña una vez que el usuario los haya introducido. Luego, cuando vuelven a ejecutar la aplicación, las preferencias tendrán sus datos almacenados y volverán a llenar los campos de inicio de sesión.

LoginActivity.java

package com.realsimpleapps.LoginTesting; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; public class LoginActivity extends Activity implements OnClickListener { private String username,password; private Button ok; private EditText editTextUsername,editTextPassword; private CheckBox saveLoginCheckBox; private SharedPreferences loginPreferences; private SharedPreferences.Editor loginPrefsEditor; private Boolean saveLogin; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); ok = (Button)findViewById(R.id.buttonLogin); ok.setOnClickListener(this); editTextUsername = (EditText)findViewById(R.id.editTextUsername); editTextPassword = (EditText)findViewById(R.id.editTextPassword); saveLoginCheckBox = (CheckBox)findViewById(R.id.saveLoginCheckBox); loginPreferences = getSharedPreferences("loginPrefs", MODE_PRIVATE); loginPrefsEditor = loginPreferences.edit(); saveLogin = loginPreferences.getBoolean("saveLogin", false); if (saveLogin == true) { editTextUsername.setText(loginPreferences.getString("username", "")); editTextPassword.setText(loginPreferences.getString("password", "")); saveLoginCheckBox.setChecked(true); } } public void onClick(View view) { if (view == ok) { InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(editTextUsername.getWindowToken(), 0); username = editTextUsername.getText().toString(); password = editTextPassword.getText().toString(); if (saveLoginCheckBox.isChecked()) { loginPrefsEditor.putBoolean("saveLogin", true); loginPrefsEditor.putString("username", username); loginPrefsEditor.putString("password", password); loginPrefsEditor.commit(); } else { loginPrefsEditor.clear(); loginPrefsEditor.commit(); } doSomethingElse(); } } public void doSomethingElse() { startActivity(new Intent(LoginActivity.this, MainActivity.class)); LoginActivity.this.finish(); } } 

El método al final, doSomethingElse () es su marcador de posición para ir al siguiente paso para su aplicación. Mi método doSomethingElse () simplemente carga otra actividad.

Aquí hay un archivo xml básico para la página de inicio de sesión:

Login.xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#000" android:padding="10dp" > <EditText android:id="@+id/editTextUsername" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/imageView1" android:hint="Username" android:inputType="textNoSuggestions" android:imeOptions="actionNext" /> <EditText android:id="@+id/editTextPassword" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/editTextUsername" android:hint="Password" android:inputType="textPassword" android:imeOptions="actionDone" /> <CheckBox android:id="@+id/saveLoginCheckBox" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/editTextPassword" android:text="Save Login?" android:textColor="#FFF" /> <Button android:id="@+id/buttonLogin" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/saveLoginCheckBox" android:layout_marginTop="40dp" android:text="Login" /> </RelativeLayout> 

IMPORTANTE: Es probable que desee cifrar la contraseña antes de almacenarla en SharedPreferences. Los detalles para que están más allá del alcance de esta pregunta, pero aquí está el código que solía hacer que: http://www.androidsnippets.com/encryptdecrypt-strings . Usted tendrá que llegar a algún tipo de esquema clave también.

Este código se ha probado en Android 2.1, SDK 7. Déjeme saber cómo funciona para usted.

David

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.