首页 > 解决方案 > 如何在登录活动中添加“记住我”?

问题描述

如果用户已经登录,我有登录活动和 updateUI 功能,允许您不登录,但我需要添加“记住我”复选框,允许您选择是否记住会话。我怎样才能做到这一点?

登录活动代码:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityLoginBinding.inflate(layoutInflater)
    setContentView(binding.root)

    initDatabase()
    updateUI()
    loginUser()

    binding.btnSignup.setOnClickListener {
        val intent = Intent(this, Signup::class.java)
        startActivity(intent)
        finish()
    }

    binding.btnContinueWithoutLogin.setOnClickListener {
        val intent = Intent(this, MainActivity::class.java)
        startActivity(intent)
        finish()
    }
}

private fun loginUser() {
    binding.btnLogin.setOnClickListener {
        val email = binding.etEmail.text.toString().trim()
        val password = binding.etPassword.text.toString().trim()

        if (email.isEmpty()) {
            binding.etEmail.error = "Field can not be empty"
            binding.etEmail.requestFocus()

            return@setOnClickListener
        }

        if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
            binding.etEmail.error = "Provide valid email"
            binding.etEmail.requestFocus()

            return@setOnClickListener
        }

        if (password.isEmpty()) {
            binding.etPassword.error = "Field can not be empty"
            binding.etPassword.requestFocus()

            return@setOnClickListener
        }

        if (password.length < 8) {
            binding.etPassword.error = "Minimal password length should be 8"
            binding.etPassword.requestFocus()

            return@setOnClickListener
        }

        mAuth.signInWithEmailAndPassword(email, password)
            .addOnCompleteListener {
                if (it.isSuccessful) {
                    val intent = Intent(this, MainActivity::class.java)
                    startActivity(intent)
                    finish()
                } else {
                    Toast.makeText(this, "Login Failed", Toast.LENGTH_LONG).show()
                }
            }
    }
}

private fun updateUI() {
    val currentUser = mAuth.currentUser

    if (currentUser != null) {
        val intent = Intent(this, MainActivity::class.java)
        startActivity(intent)
        finish()
    }
}


private fun initDatabase()
{
    mAuth = FirebaseAuth.getInstance()
}

主要活动代码:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)

    mAuth = FirebaseAuth.getInstance()

    binding.btnLogout.setOnClickListener {
        mAuth.signOut()

        val intent = Intent(this, Login::class.java)
        startActivity(intent)
        finish()
    }
}

我尝试使用 Sharedpreferences,但不知何故没有成功

标签: androidfirebasekotlinauthenticationcheckbox

解决方案


推荐阅读