728x90

안드로이드 어플에서 userID, userPW 정보를 자동 저장해두고 다음부터는 편리하게 접속하는 기능이 뭘까?


이런 자동로그인 처리를 가능하게 해주는 것이 Preference 이다.

간단하게 내 폰 어딘가에 userID, userPW, 자동로그인 체크 정보를 기록하는 것이다.

Preference 저장 장소 : data/data/패키지명/Shared_prefs 라는 곳에 키 - 값 쌍으로 저장된다.

Shared Preference 는 데이터의 저장보다는 UI 상태를 저장하는데 사용된다.

Shared Preference는 데이터의 저장보다는 UI 상태를 저장하는데 사용

출처: http://androidhuman.com/193 [커니의 안드로이드 이야기]


저장하기

 SharedPreferences settings = getSharedPreferences("PrefName", MODE_PRIVATE);
 SharedPreferences.Editor editor =
settings.edit();
 editor.putString(KEY_MY_PREFERENCE, text);
 editor.commit();

 불러오기

 SharedPreferences settings = getSharedPreferences("PrefName", MODE_PRIVATE);
 String text =
settings.getString(KEY_MY_PREFERENCE, "");


getSharedPreferences("settings", Activity.MODE_PRIVATE); // MODE_PRIVATE : 읽기 쓰기 가능

getSharedPreferences("settings", 0); 으로 해도 같은 의미이다.



Preference 정보 저장하는 방법


public SharedPreferences settings; // 정의

String loginID;
String loginPW;
CheckBox autologin;
Boolean loginChecked;
EditText etId;
EditText etPw;

etId = (EditText) findViewById(R.id.login_id_edit);
etPw = (EditText) findViewById(R.id.login_pw_edit);   
autologin = (CheckBox) findViewById(R.id.autologinchk);

loginID = etId.getText().toString().trim();
loginPW = etPw.getText().toString().trim();

public void onStop(){
    // 어플리케이션이 화면에서 사라질때
    super.onStop();       
    // 자동 로그인이 체크되어 있고, 로그인에 성공했으면 폰에 자동로그인 정보 저장     
    if (autologin.isChecked()) {
        settings = getSharedPreferences("settings",Activity.MODE_PRIVATE);
        SharedPreferences.Editor editor = settings.edit();
       
         editor.putString("loginID", loginID);
         editor.putString("loginPW", loginPW);
         editor.putBoolean("LoginChecked", true);
        
         editor.commit();
    } else {
        // 자동 로그인 체크가 해제되면 폰에 저장된 정보 모두 삭제
        settings = getSharedPreferences("settings",    Activity.MODE_PRIVATE);
        SharedPreferences.Editor editor = settings.edit();
        editor.clear(); // 모든 정보 해제
        editor.commit();
    }
}


Preference 정보 가져오는 방법


public SharedPreferences settings;
String loginID;
String loginPW;
CheckBox autologin;
Boolean loginChecked;
EditText etId;
EditText etPw;

etId = (EditText) findViewById(R.id.login_id_edit);
etPw = (EditText) findViewById(R.id.login_pw_edit);   
autologin = (CheckBox) findViewById(R.id.autologinchk);

loginID = etId.getText().toString().trim();
loginPW = etPw.getText().toString().trim();

settings = getSharedPreferences("settings", Activity.MODE_PRIVATE);

// 자동 로그인을 설정했다면 앱이 다시 시작하는 경우에도 입력했던 값이 유지되도록 하기 위한 코드

loginChecked = settings.getBoolean("LoginChecked", false);
if (loginChecked) {
    etId.setText(settings.getString("loginID", ""));
    etPw.setText(settings.getString("loginPW", ""));
    autologin.setChecked(true);
}



참고하면 도움이 될 내용

http://javaexpert.tistory.com/620

블로그 이미지

Link2Me

,