quarta-feira, 6 de março de 2013

Salvando Login do Aplicativo Android

Depois de muito tempo, vou colocar um post,
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