Android应用程序使用startActivityForResult()在活动开始之前显示MainActivity
我正在使用FirebaseUI Auth在我的应用程序中实现登录流。要真正启动登录流,我首先创建一个AuthStateListenerAndroid应用程序使用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
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()函数中的代码调用它,所以我无法实际将其指定为清单文件中的启动器活动。不过,谢谢你的回答。