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