SharedPreferences 는 디비를 쓰기 애매한 경우(하나의 정보만 저장이 필요할 때) 또는 자동 로그인 기능을 구현하고 싶을 때 유용한 API입니다. 먼저 액티비티 2개 xml 2개를 만들어서 자동 로그인 기능을 디비 없이 간단하게 알아보겠습니다. 프로젝트를 새로 생성합니다. 메인 액티비티에서 조건문을 줘서 SharedPreferences에 일정 값이 저장되어 있으면 서브 액티비티로 이동하게 만들어보겠습니다. 이번 포스팅을 활용하면 자동 로그인을 구현할 수 있겠죠? 먼저 메인 액티비티와 메인 xml입니다. 클래스파일 안에 어느정도 주석을 달아 놓았습니다. SharedPreferences 라는 API를 찾으러 오신 분들은 자바나 안드로이드에 기본적인 지식은 있으실 것이라 생각해서 기본 적인 것들은 설명을 생략하겠습니다 ㅎㅎ MainActivity.java
package com.example.a15u560.autologin;import android.app.Activity;import android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;publicclassMainActivityextendsActivity{
EditText id, pwd;
Button btn;
String loginId, loginPwd;
@Override
protectedvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
id =(EditText)findViewById(R.id.inputId);
pwd =(EditText)findViewById(R.id.inputPwd);
btn =(Button)findViewById(R.id.loginBtn);
SharedPreferences auto =getSharedPreferences("auto", Activity.MODE_PRIVATE);//처음에는 SharedPreferences에 아무런 정보도 없으므로 값을 저장할 키들을 생성한다.// getString의 첫 번째 인자는 저장될 키, 두 번쨰 인자는 값입니다.// 첨엔 값이 없으므로 키값은 원하는 것으로 하시고 값을 null을 줍니다.
loginId = auto.getString("inputId",null);
loginPwd = auto.getString("inputPwd",null);//MainActivity로 들어왔을 때 loginId와 loginPwd값을 가져와서 null이 아니면
값을 가져와 id가 부르곰이고 pwd가 네이버 이면 자동적으로 액티비티 이동.if(loginId !=null&& loginPwd !=null){if(loginId.equals("부르곰")&& loginPwd.equals("네이버")){
Toast.makeText(MainActivity.this, loginId +"님 자동로그인 입니다.", Toast.LENGTH_SHORT).show();
Intent intent =newIntent(MainActivity.this, SubActivity.class);startActivity(intent);finish();}}//id와 pwd가 null이면 Mainactivity가 보여짐.elseif(loginId ==null&& loginPwd ==null){
btn.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(View view){if(id.getText().toString().equals("부르곰")&& pwd.getText().toString().equals("네이버")){
SharedPreferences auto =getSharedPreferences("auto", Activity.MODE_PRIVATE);//아이디가 '부르곰'이고 비밀번호가 '네이버'일 경우 SharedPreferences.Editor를 통해//auto의 loginId와 loginPwd에 값을 저장해 줍니다.
SharedPreferences.Editor autoLogin = auto.edit();
autoLogin.putString("inputId", id.getText().toString());
autoLogin.putString("inputPwd", pwd.getText().toString());//꼭 commit()을 해줘야 값이 저장됩니다 ㅎㅎ
autoLogin.commit();
Toast.makeText(MainActivity.this, id.getText().toString()+"님 환영합니다.", Toast.LENGTH_SHORT).show();
Intent intent =newIntent(MainActivity.this, SubActivity.class);startActivity(intent);finish();}}});}}}