Firebase Android Авто Войти

Поэтому я настраиваю регистрацию электронной почты и пароль и логин.

Это работает. Я думал, Firebase позаботился об этом, но, по-видимому, нет. Я хочу, чтобы после закрытия приложения приложение запустилось в следующий раз, когда они откроют приложение.

Чего не хватает?

class LoginActivity : AppCompatActivity(){ lateinit var auth: FirebaseAuth lateinit var user: FirebaseAuth override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) auth = FirebaseAuth.getInstance() } fun loginLoginClicked(view: View) { // Perform login val email = loginEmailTxt.text.toString() val password = loginPasswordTxt.text.toString() auth.signInWithEmailAndPassword(email, password) .addOnSuccessListener { finish() } .addOnFailureListener { exception -> Log.e("Exception", "Could not sign in user - ${exception.localizedMessage}") } val loginIntent = Intent(this, MainActivity::class.java) startActivity(loginIntent) } fun loginCreateClicked(view: View) { // segue to the create user activity val createIntent = Intent(this, SignUpActivity::class.java) startActivity(createIntent) }} } 

Firebase Authentication автоматически запоминает состояние аутентификации, поэтому пользователь все равно будет аутентифицирован при перезапуске приложения.

Однако, если ваш LoginActivity является активностью запуска, вы все равно приземляетесь на это действие, поэтому вам нужно будет проверить, аутентифицирован ли пользователь в onCreate() , а затем перенаправляет их на MainActivity если они уже вошли в систему, что-то вроде:

 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) auth = FirebaseAuth.getInstance() if (auth.getCurrentUser() != null) { // User is signed in (getCurrentUser() will be null if not signed in) val intent = Intent(this, MainActivity::class.java) startActivity(intent) finish() } } 

Это использует метод FirebaseAuth#getCurrentUser() , который возвращает объект FirebaseUser если пользователь вошел в систему, или null если они не вошли в систему.

В качестве альтернативы, вы можете поменять его таким образом, чтобы MainActivity являлся активностью запуска, а затем показывал только свой LoginActivity если пользователь не вошел в систему.