所以我有一个RegisterActivity
和一个MapsActivity
。当新用户打开应用程序时,他们将RegisterActivity
登录并注册。一旦他们注册,我的应用程序就会创建一个Intent
并将它们发送到MapsActivity
问题是每当用户关闭应用程序时,他们都必须再次登录/注册。
我希望应用程序能够重新打开,MapsActivity
因为用户尚未退出
这是我的尝试:
我把<intent-filter>
两者都放进去RegisterActivity
,MapsActivity
因为我认为两者都应该是主要的启动器,这取决于用户是否登录?
RegisterActivity
MapsActivity
AndroidManifest.xml
<application
<activity android:name=".MapsActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".RegisterActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".LoginActivity">
</activity>
</application>
地图活动.kt
public override fun onStart() {
super.onStart()
// Check if user is signed in (non-null) and update UI accordingly.
val currentUser = FirebaseAuth.getInstance().currentUser
if(currentUser == null){
Log.d(TAG, "User is not logged in")
val intent = Intent(this, LoginActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK.or(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
}else {
Log.d(TAG, "User is logged in")
}
}
实现这一点的最简单方法是使用侦听器。假设您有两个活动,LoginActivity
和MainActivity
。可以在 中创建的侦听器LoginActivity
应如下所示:
val authStateListener = FirebaseAuth.AuthStateListener { firebaseAuth ->
val firebaseUser = firebaseAuth.currentUser
if (firebaseUser != null) {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
finish()
}
}
这基本上意味着,如果用户已登录,则跳过LoginActivity
并转到MainActivity
.
实例化FirebaseAuth
对象:
val firebaseAuth = FirebaseAuth.getInstance()
并开始侦听您的onStart()
方法中的更改,如下所示:
override fun onStart() {
super.onStart()
firebaseAuth!!.addAuthStateListener(this.authStateListener!!)
}
在 中MainActivity
,你应该做同样的事情:
val authStateListener = FirebaseAuth.AuthStateListener { firebaseAuth ->
val firebaseUser = firebaseAuth.currentUser
if (firebaseUser == null) {
val intent = Intent(this, LoginActivity::class.java)
startActivity(intent)
}
}
这基本上意味着如果用户未登录,请跳过MainActivity
并转到LoginActivity
. 在这个活动中,你应该做和在 中一样的事情LoginActivity
,你应该开始监听 中的变化onStart()
。
在这两个活动中,不要忘记在不再需要的那一刻删除侦听器。因此,在您的onStop()
方法中添加以下代码行:
override fun onStop() {
super.onStop()
firebaseAuth!!.removeAuthStateListener(this.authStateListener!!)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句