mostrando como salvar os dados de login de um aplicativo android.
Primeiramente,
vamos colocar
no nosso layout
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@android:style/Theme.Dialog"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="right"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Usuário"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/txtUser"
android:layout_below="@+id/txtUser"
android:layout_marginTop="17dp"
android:text="Senha"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/txtUser"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_alignParentRight="true"
android:layout_below="@+id/textView1"
android:ems="10"
>
<requestFocus />
</EditText>
<EditText
android:id="@+id/txtPass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_alignRight="@+id/txtUser"
android:layout_below="@+id/textView2"
android:ems="10"
android:inputType="textPassword" >
</EditText>
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/txtPass"
android:layout_alignRight="@+id/txtPass"
android:layout_below="@+id/txtPass"
android:layout_marginTop="22dp"
android:text="Salvar dados."
android:checked="true"
/>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/checkBox1"
android:layout_marginTop="31dp"
android:text="Login"
android:onClick="Logar_Click"
/>
</RelativeLayout>
Feito isso,precisamos verificar se existe alguma informação gravada..
para isso, vou criar uma classe onde terá o método de verificar se exite a informação gravada, e um método para pegar essa informação
vamos lá:
Utilizamos a classe SharedPreferences, para salvar preferencias e consultar as mesmas.
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.preference.PreferenceManager;
import android.util.Log;
public class Utils {
private SharedPreferences prefs;
private Editor editor;
public void saveStringPreferences(String key, String value, Context ctx ){
try {
prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
editor = prefs.edit();
editor.putString(key, value);
editor.commit();
} catch (Exception e) {
Log.getStackTraceString(e);
}
}
public String getStringPreferences(String key, Context ctx ){
prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
return prefs.getString(key, "");
}
}
a Classe SharedPreferences se você quiser aprender um pouco mais sobre ela.
http://developer.android.com/reference/android/content/SharedPreferences.html
feito o metodo, vamos consumir ele na activity.
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import Utils;
public class MainActivity extends Activity {
static final String KEY_USERNAME = "username";
static final String KEY_PASSWORD = "password";
private ProgressDialog progress;
private EditText usuario;
private EditText senha;
private Utils utils;
private CheckBox checkBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
usuario = (EditText)findViewById(R.id.txtUser);
senha = (EditText)findViewById(R.id.txtPass);
checkBox = (CheckBox)findViewById(R.id.checkBox1);
utils = new Utils();
String username = utils.getStringPreferences(KEY_USERNAME,this);
String password = utils.getStringPreferences(KEY_PASSWORD,this);
senha.setText(password);
usuario.setText(username);
}
public void Logar_Click(View v){
utils = new Utils();
if(checkBox.isChecked()){
utils.saveStringPreferences(KEY_USERNAME, usuario.getText().toString(), this);
utils.saveStringPreferences(KEY_PASSWORD, senha.getText().toString(), this);
}else{
utils.saveStringPreferences(KEY_USERNAME, "", this);
utils.saveStringPreferences(KEY_PASSWORD, "", this);
}
//chama o login.
}
}
Pronto!
você já grava o usuário e a senha, caso ele queira, e caso não, vc salva "" .
Fácil e pratico!
Vitor Yudi Hansen