Android应用程序使用startActivityForResult()在活动开始之前显示MainActivity

Android应用程序使用startActivityForResult()在活动开始之前显示MainActivity,android,kotlin,android-activity,firebaseui,Android,Kotlin,Android Activity,Firebaseui,我正在使用FirebaseUI Auth在我的应用程序中实现登录流。要真正启动登录流,我首先创建一个AuthStateListener authStateListener = FirebaseAuth.AuthStateListener { authObj -> val currUser = authObj.currentUser if (currUser == null) startActivityForRe

我正在使用FirebaseUI Auth在我的应用程序中实现登录流。要真正启动登录流,我首先创建一个AuthStateListener

authStateListener = FirebaseAuth.AuthStateListener { authObj ->
            val currUser = authObj.currentUser
            if (currUser == null)
                startActivityForResult(
                    AuthUI.getInstance()
                        .createSignInIntentBuilder()
                        .setAvailableProviders(providers)
                        .build(),
                    SIGN_IN
                )
}
然后我将
authStateListener
对象附加到
onResume()
中的FirebaseAuth实例,如下所示

override fun onResume() {
        super.onResume()
        FirebaseAuth.getInstance().addAuthStateListener(authStateListener)
}
即使如此,在启动应用程序时,首先会出现MainActivity,几秒钟后才会出现FirebaseUI活动

总之,我的问题是如何让FirebaseUI活动成为用户在启动应用程序时看到的第一个活动,而不是main活动


谢谢你考虑我的问题

如果希望在用户打开应用程序时显示FirebaseUIActivity,则需要从清单文件中的MainActivity条目中删除以下代码,并将其添加到FirebaseUIActivity中

intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
intent过滤器>
因此,你的主要活动将成为

<activity android:name=".MainActivity"/>
<activity android:name=".FirebaseUIActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

你的FireBaseUI活动将变得

<activity android:name=".MainActivity"/>
<activity android:name=".FirebaseUIActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


完成后,您需要调用startActivity而不是startActivityForResult()

如果您想在用户打开应用程序时显示FirebaseUIActivity,则需要从清单文件中的MainActivity条目中删除以下代码,并将其添加到FirebaseUIActivity中

intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
intent过滤器>
因此,你的主要活动将成为

<activity android:name=".MainActivity"/>
<activity android:name=".FirebaseUIActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

你的FireBaseUI活动将变得

<activity android:name=".MainActivity"/>
<activity android:name=".FirebaseUIActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


一旦你完成了,你需要调用startActivity而不是startActivityForResult()

如果我把它说得不清楚,我很抱歉,但是FirebaseUI活动实际上并不存在于代码中,相反,我通过构建意图,用startActivityForResult()函数中的代码调用它,所以我不能在清单文件中将其指定为启动器活动。不过,还是要感谢您的回答。如果我把它说得不清楚,我很抱歉,但是FirebaseUI活动实际上并不存在于代码中,而是通过构建一个意图,用startActivityForResult()函数中的代码调用它,所以我无法实际将其指定为清单文件中的启动器活动。不过,谢谢你的回答。