如何在出现登录屏幕时阻止用户返回,而不杀死活动(Firebase身份验证)

问题描述 投票:0回答:1

我设计了一个具有自己独立活动(初始活动)的初始屏幕:

class SplachActivity:AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    setTheme(R.style.AppTheme)
    val user = FirebaseAuth.getInstance().currentUser
    if (user != null)
    {
        AuthUI.getInstance().signOut(this)
        val startIntent = Intent(this,MainActivity::class.java)
        startIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
        startActivity(startIntent)
        finish()
    }
    else
    {
        val providers = arrayListOf(AuthUI.IdpConfig.EmailBuilder().build(), AuthUI.IdpConfig.GoogleBuilder().build())
        startActivityForResult(
            AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setLogo(R.drawable.ic_calculate)
                .setIsSmartLockEnabled(false)
                .setAvailableProviders(providers)
                .build(),
            0)

    }
    super.onCreate(savedInstanceState)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if(requestCode == 0)
    {
        val response = IdpResponse.fromResultIntent(data)
        if(resultCode == Activity.RESULT_OK)
        {

            val startIntent = Intent(this,MainActivity::class.java)
            startIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
            startActivity(startIntent)
            finish()
        }
        else
        {
            if (response != null) {
                Log.e("LogIn Error","${response.error?.errorCode}")
            }
        }
    }
}

如您所见,此初始屏幕在充当启动器的同时,还充当了一项活动,如果用户未登录,它将使用户进入登录屏幕。

但是,我试图阻止用户返回此活动(由于此活动没有布局,因此请按返回按钮)。我尝试了以下方法:

        <activity android:name=".SplachActivity"
        android:theme="@style/AppTheme" android:noHistory="true" android:excludeFromRecents="true">
    </activity>

但是通过这样做,该活动将在导航后被杀死,这导致永不调用onActivityResult()。

因此,我不确定该如何做才能不终止该活动,但仍然阻止用户返回该活动(在登录期间和登录后),因为我无法更改提供的身份验证程序由Firebase提供。

谢谢!

android authentication firebase-authentication
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.