android - 使用 startActivityForResult() 在 Activity 开始之前显示 MainActivity 的 Android 应用
问题描述
我正在使用 FirebaseUI Auth 在我的应用中实现登录流程。为了真正开始登录流程,我首先创建了一个AuthStateListener
authStateListener = FirebaseAuth.AuthStateListener { authObj ->
val currUser = authObj.currentUser
if (currUser == null)
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(providers)
.build(),
SIGN_IN
)
}
然后我将authStateListener
对象附加到FirebaseAuth实例中onResume()
,就像这样
override fun onResume() {
super.onResume()
FirebaseAuth.getInstance().addAuthStateListener(authStateListener)
}
即使这样,在启动应用程序时,首先会出现 MainActivity,然后几秒钟后才会出现 FirebaseUI 活动。
总之,我的问题是如何使FirebaseUI活动成为用户在启动应用程序时看到的第一个活动,而不是 MainActivity?
感谢您考虑我的问题!
解决方案
如果您想在用户打开应用程序时显示 FirebaseUIActivity,您需要从 Manifest 文件中的 MainActivity 条目中删除以下代码,并将其添加到您的 FirebaseUIActivity。
intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
所以你的主要活动将变成
<activity android:name=".MainActivity"/>
你的 FirebaseUIActivity 将变成
<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()
推荐阅读
- android - 在ImageView Android上绘制时绘制的矩形不是正方形
- python - 为什么 Python for 循环每次都返回最后一个元素?
- ionic-framework - 离子项目创建的 Npm 失败
- vba - MS Access 组合框/VBA
- slack-api - 如何自定义随 Slack 机器人消息显示的名称
- youtube - Discord.py - 发布 youtube 视频时,如何向不和谐频道发送消息?
- laravel - 在 Laravel Eloquent 中,为什么没有绑定一些 SQL 参数?
- sql - 过滤特定列并返回所有列
- linux - LINUX 脚本 bash
- php - 我如何通过 Stripe API 判断连接的帐户是否完整?