Android 로그인 기능 구현하기

Jungmin Lee·2020년 12월 30일
2

Android

목록 보기
2/7
post-thumbnail

✔ 자동로그인, sharedpreferences

⭐ 자동로그인과 SharedPreferences

1. Toast를 이용해 알림띄우기

.kt

Toast.makeText(this, "자동 로그인되었습니다", Toast.LENGTH_SHORT).show()

2. 회원가입 후 아이디와 비밀번호 가져오기

Login.kt(회원가입 버튼눌렀을때 회원가입페이지로 전환)

to_signup.setOnClickListener{
            var intent= Intent(this, SignUpActivity::class.java)
            startActivityForResult(intent,1)
        }

Signup.kt(회원가입 완료시 로그인 페이지로 전환)

var intent= Intent(this, LoginActivity::class.java)
intent.putExtra("email", editText.text.toString())
intent.putExtra("password", editText4.text.toString())
setResult(Activity.RESULT_OK, intent)

Login.kt(가지고 온 결과로 띄우기)

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode == Activity.RESULT_OK){
            when(requestCode){
                1->{
                    editText.setText(data!!.getStringExtra("email"))
                    editText2.setText(data!!.getStringExtra("password"))
                }
            }

        }

    }

3. SharedPreferences 이용해서 자동로그인

App.kt

class App: Application() {
    override fun onCreate(){
        super.onCreate()
        MySharedPreferences.init(this)
    }
}

MySharedPreferences.kt

object MySharedPreferences {
    private const val NAME = "trace.trace_study"
    private const val MODE = Context.MODE_PRIVATE
    private lateinit var preferences: SharedPreferences

    // SharedPreferences variables
    private val IS_LOGIN = Pair("is_login", false) //자동로그인 여부
    private val EMAIL = Pair("email", "")
    private val PASSWORD = Pair("password", "")

    fun init(context: Context){
        preferences = context.getSharedPreferences(NAME, MODE)
    }

    // an inline function to put variable and save it
    private inline fun SharedPreferences.edit(operation: (SharedPreferences.Editor) -> Unit) {
        val editor = edit()
        operation(editor)
        editor.apply()
    }

    // 값 가져오기 / 변경하기. 걍 MySharedPreferences.email 이런 식으로 값 가져오고 바로 변경 가능
    var islogin: Boolean
        get() = preferences.getBoolean(IS_LOGIN.first, IS_LOGIN.second)
        set(value) = preferences.edit {
            it.putBoolean(IS_LOGIN.first, value)
        }

    var email: String
        get() = preferences.getString(EMAIL.first, EMAIL.second) ?: ""
        set(value) = preferences.edit {
            it.putString(EMAIL.first, value)
        }

    var password: String
        get() = preferences.getString(PASSWORD.first, PASSWORD.second) ?: ""
        set(value) = preferences.edit {
            it.putString(PASSWORD.first, value)
        }

}

mainactivity.kt(사용할 곳에서 데이터 저장/사용)

MySharedPreferences.islogin = true
MySharedPreferences.email = editText.text.toString()
MySharedPreferences.password = editText2.text.toString()

if (MySharedPreferences.islogin) {
            //내용
        }
profile
금융 도메인과 개발 지식을 함께 쌓아가는 주니어 개발자입니다😊

0개의 댓글