Preferences 를 이용한 자동 로그인

프로그래밍/Android (Java)|2015. 5. 27. 09:29
반응형

SharedPreferences

데이터를 간단하게 저장할 수 있는 안드로이드에서 제공하는 클래스이다.



/src/com/sysdocu/study/MainActivity.java


package com.example.example;


import android.app.Activity;

import android.content.SharedPreferences;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.CheckBox;

import android.widget.EditText;

import android.widget.Toast;


public class MainActivity extends Activity implements OnClickListener{

        EditText et_id, et_pw;

        CheckBox chk_auto;

        Button btn_login;


        SharedPreferences setting;

        SharedPreferences.Editor editor;

        @Override

        protected void onCreate(Bundle savedInstanceState) {

                super.onCreate(savedInstanceState);

                setContentView(R.layout.activity_main);


                et_id = (EditText) findViewById(R.id.et_id);

                et_pw = (EditText) findViewById(R.id.et_pw);

                chk_auto = (CheckBox) findViewById(R.id.chk_auto);

                btn_login = (Button) findViewById(R.id.btn_login);



                setting = getSharedPreferences("setting", 0);

                editor= setting.edit();


                if(setting.getBoolean("chk_auto", false)){

                        et_id.setText(setting.getString("ID", ""));

                        et_pw.setText(setting.getString("PW", ""));

                        chk_auto.setChecked(true);

                }


                btn_login.setOnClickListener(this);

        }


        @Override

        public void onClick(View v) {

                if(chk_auto.isChecked()){

                        Toast.makeText(this, "로그인", Toast.LENGTH_SHORT).show();

                        String ID = et_id.getText().toString();

                        String PW = et_pw.getText().toString();


                        editor.putString("ID", ID);

                        editor.putString("PW", PW);

                        editor.putBoolean("chk_auto", true);

                        editor.commit();

                }else{

                        editor.clear();

                        editor.commit();

                }

        }

}



/res/layout/activity_main.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        tools:context=".MainActivity2" >


        <TextView

                android:id="@+id/txt_id"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_alignParentTop="true"

                android:layout_centerHorizontal="true"

                android:layout_marginTop="30dp"

                android:text="ID를 입력하세요" />


        <EditText

                android:id="@+id/et_id"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_below="@+id/txt_id"

                android:layout_centerHorizontal="true"

                android:ems="10" />


        <TextView

                android:id="@+id/txt_pw"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_below="@+id/et_id"

                android:layout_marginTop="30dp"

                android:layout_centerHorizontal="true"

                android:text="비밀번호를 입력하세요" />


        <EditText

                android:id="@+id/et_pw"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_below="@+id/txt_pw"

                android:layout_centerHorizontal="true"

                android:ems="10" >


                <requestFocus />

        </EditText>


        <CheckBox

                android:id="@+id/chk_auto"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_below="@+id/et_pw"

                android:layout_centerHorizontal="true"

                android:layout_marginTop="30dp"

                android:text="저장하기" />


        <Button

                android:id="@+id/btn_login"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_below="@+id/chk_auto"

                android:layout_centerHorizontal="true"

                android:layout_marginTop="30dp"

                android:text="로그인" />


</RelativeLayout> 


[출처] 현's 블로그 (http://hyunssssss.tistory.com/307)


* '아이디, 패스워드 저장' 체크박스 체크 후 재로그인 할때는 저장된 값으로 비교함수 (if 문) 를 이용하여 로그인 페이지를 skip 하는방법을 사용하면 좋을것 같습니다. ('아이디, 패스워드 저장' 해제는 어플 내 환경설정에서)



반응형

댓글()