Android 如何确保下次打开我的应用时不会再次要求登录

Android 如何确保下次打开我的应用时不会再次要求登录,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,晚安,我设法用kotlin在我的应用程序中创建了我的第一个登录,在每次应用程序打开时,它都会要求您登录,我想知道当用户登录时如何做到这一点,它不会要求再次登录,最后会关闭会话,因此现在如果用户要求再次注册。 这是我的代码: package com.example.orashopboss import android.content.Context import android.content.Intent import android.os.Bundle import android.widg

晚安,我设法用kotlin在我的应用程序中创建了我的第一个登录,在每次应用程序打开时,它都会要求您登录,我想知道当用户登录时如何做到这一点,它不会要求再次登录,最后会关闭会话,因此现在如果用户要求再次注册。 这是我的代码:

package com.example.orashopboss

import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.GoogleAuthProvider
import kotlinx.android.synthetic.main.activity_main.*

enum class ProviderType {
    BASIC
}

class Login : AppCompatActivity() {
    private val mAuth : FirebaseAuth by lazy { FirebaseAuth.getInstance() }
    override fun onCreate(savedInstanceState : Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        signIn.setOnClickListener {
            val email = editTextEmailLog.text.toString()
            val password = editTextPassLog.text.toString()
            if (isValidEmailAndPassword(email , password)) {
                signUpByEmail(email , password)
            } else {
                val intent = Intent(this , popUpWndow::class.java)
                startActivity(intent)
            }
        }
    }
    private fun signUpByEmail(email : String , password : String) {
        mAuth.signInWithEmailAndPassword(email , password).addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                if (mAuth.currentUser!!.isEmailVerified) {
                    val intent = Intent(this , home::class.java)
                    startActivity(intent)
                } else {
                    val intent = Intent(this , emailnoverified::class.java)
                    startActivity(intent)
                }
            }
        }
    }
    private fun isValidEmailAndPassword(email : String , password : String): Boolean {
        return !email.isNullOrEmpty() &&
                !password.isNullOrEmpty()
    }
}

谢谢你,晚安

当先前登录的用户对象首次可用时,应该使用身份验证状态侦听器获取回调。应用程序首次启动时,用户对象将不可用,因此请使用回调来了解SDK何时加载了它

另见:


    • As@Doug Stevenson已经回答了这个问题。 下面是java的简单实现

      全局定义

      private FirebaseUser user;
      private FirebaseAuth firebaseAuth;
      
      一次创建

          firebaseAuth = FirebaseAuth.getInstance();
          user = firebaseAuth.getCurrentUser();
      
      然后


      因此,现在简而言之,无论何时打开应用程序。每次登录都将通过条件,如果currentuser等于null,则应用程序将显示登录屏幕,如果不是,则应用程序将转到您提到的下一个屏幕。

      我想这可能会有所帮助。谢谢,但当用户登录并退出(仅第一次)时,他们将返回登录屏幕,第二次用户备份时,他们退出应用程序,但第一次不退出。如何解决此问题?@LiamBrown.finish登录活动,然后导航到任何其他活动。
            if (user != null) {
                  finish();
                  startActivity(new Intent(LoginActivity.this, 
           MainActivity.class));
              }