본문 바로가기

프로그래밍/안드로이드

[안드로이드] SharedPreferences를 이용한 자동로그인 기능 구현

안녕하세요 ! 초보개발자 입니다. 

이 블로그는 개인 공부 정리용 블로그 입니다. 

혹 잘못된 내용이 있다면 지적 부탁드리겠습니다.

그리고 질문주신다면 최대한 아는선에서 답변드리도록 하겠습니다.

그럼 시작하도록 하겠습니다.



[안드로이드] 자동로그인 기능 구현


오늘은 레이아웃을 익힌 것을 바탕으로 로그인 화면을 만들고 자동로그인 기능을 넣어보도록 하겠습니다. 


먼저 간단한 로그인 화면을 만들어 보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:focusableInTouchMode="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.donghyun.fpm.LoginActivity">
    <EditText
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:id="@+id/id"
        android:hint="ID"
        android:inputType="textUri"
        android:layout_marginTop="148dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />
    <EditText
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:id="@+id/password"
        android:inputType="textPassword"
        android:hint="Password"
        android:layout_below="@+id/id"
        android:layout_alignStart="@+id/id" />
    <CheckBox
        android:text="자동 로그인"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/password"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="14dp"
        android:id="@+id/autoLoginCheck"
        />
    <Button
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:id="@+id/loginButton"
        android:text="로그인"
        android:layout_marginTop="32dp"
        android:layout_below="@+id/autoLoginCheck"
        android:layout_centerHorizontal="true" />
</RelativeLayout>
 
cs


화면은 다음과 같이 출력이 됩니다.




id와 password를 입력하고 로그인 버튼을 누르면 다음화면으로 넘어 갑니다. 자동 로그인 테스트를 위해 id가 "초보" password가 "1234" 일 경우에만 다음 화면으로 넘어가게 하였습니다. 그리고 자동 로그인 부분을 체크 하고 로그인 하였을 경우 어플 재 실행시 id,password 입력 없이 로그인이 가능하도록 코딩을 하겠습니다. 


먼저 자동로그인 기능을 구현하기 위해서는 우리가 입력한 아이디나 비밀번호를 어딘가에 저장을 해놓아야 어플이 재실행 되었을때 다시 불러 올 수 있습니다. 이럴경우 안드로이드에서 제공하는 SharedPreferences를 사용합니다. SharedPreferences를 사용하는 선언하는 방법은 다음과 같습니다.


SharedPreferences loginInformation =getSharedPreferences("setting",0);


getSharedPreferences("setting",0); 에서 "setting" 는 파일이름 이라고 생각하시면 됩니다. 


그리고 SharedPreferences.Editor 를 이용하여 id,password를 setting 에 저장 해보도록 하겠습니다.


SharedPreferences.Editor editor= loginInformation.edit();


저장할 때는 (Key, Value) 형태로 저장 하게 됩니다.


editor.putString("id", 입력한 아이디);

editor.putString("password" 입력한 패스워드);

editor.commit();


중요한 부분은 editor.commit(); 를 해야만 저장이 됩니다.


저장된 값을 불러 올 때는 저장한 key값을 이용하여 다음과 같이 불러 옵니다.


loginInformation.getstring("id","");

loginInformation.getstring("password","");


어플 실행 화면은 다음과 같습니다.




자동 로그인 체크 없이 로그인 하였을 경우 앱을 재실행시에 자동 로그인이 되지 않습니다. 그리고 체크하고 로그인 후 재실행 하면 아이디 비번 입력없이 로그인이 되시는 것을 확인 할 수 있습니다. 로그인 후 Main화면에서 로그아웃 버튼을 클릭하여 앱 종료시에 재실행 하면 로그아웃을 하였기 때문에 다시 아이디 비번 입력을 요구 합니다. 종료 버튼을 누르셨다면 아이디 비번 입력없이 자동 로그인이 되는 것을 확인 할 수 있습니다.


해당 프로그램 소스를 원하시면 댓글 달아 주세요. 


오늘은 SharedPreferences 를 이용하여 자동 로그인 기능을 구현하였습니다. 수고하셨습니다.