Android Studio (Kotlin) - 每次关闭应用程序时,用户都必须重新登录应用程序

条码

所以我有一个RegisterActivity和一个MapsActivity当新用户打开应用程序时,他们将RegisterActivity登录并注册。一旦他们注册,我的应用程序就会创建一个Intent并将它们发送到MapsActivity

问题是每当用户关闭应用程序时,他们都必须再次登录/注册。

我希望应用程序能够重新打开,MapsActivity因为用户尚未退出


这是我的尝试:

我把<intent-filter>两者都放进去RegisterActivityMapsActivity因为我认为两者都应该是主要的启动器,这取决于用户是否登录?

  • 如果他们没有登录,那么主启动器应该是 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")
    }
}
亚历克斯·马莫

实现这一点的最简单方法是使用侦听器。假设您有两个活动,LoginActivityMainActivity可以在 中创建的侦听器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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从 android studio 运行 kotlin 应用程序?

在 Kotlin 的 Android Studio 中更改应用程序标题颜色

Android Studio kotlin 应用程序“保持停止”错误

即使用户在 android studio 中关闭应用程序,如何保持登录状态

在命令行上(没有android studio)开发Android kotlin应用程序与Android Java应用程序的差异

当用户在 Android 中关闭应用程序时如何重新启动应用程序

Android Studio:倒数计时器,在关闭应用程序时也会运行

在构建胡椒的 Android Studio 应用程序时出错

使用 Android Studio 运行应用程序时出错

Android Studio:尝试再次启动应用程序时失败

在Android Studio上构建应用程序时出错

调试应用程序时出现Android Studio dexDebug错误

在Android Studio中运行应用程序时发生错误

Android Studio Kotlin 应用程序在我运行时“一直停止”

如何在Kotlin中关闭Android应用程序

Android Studio-每次运行时重新安装应用程序

Android Studio Preview 3.0-运行即时应用程序时应用程序安装失败

Android Studio AlarmManager.cancel()关闭应用程序

如何使用Android Studio登录应用程序?

用户在Android Studio中登录后如何打开应用程序进行不同的活动

Android Studio在应用程序内部重新加载应用程序

每次在 Android Studio 中运行应用程序时如何打开设备选择器?

Android - 即使用户使用 KOTLIN 关闭应用程序,我如何保存用户设置首选项?

我的 Kotlin Android Studio 应用程序在按下按钮时不断崩溃,而没有给出值

Kotlin / Android Studio-如何将变量从替代乐趣传递到应用程序的其余部分?

Android Studio:自动签署应用程序

Android Studio - 无法调试应用程序

Android Studio教程应用程序崩溃

Android Studio应用程序图标