You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google登录后App无法自动跳转至目标Activity,重启/后台恢复正常求助

修复Google登录后无法自动跳转至目标Activity的问题

我仔细看了你的代码和描述,问题的根源很清晰——你在Google登录成功并完成Firebase认证后,没有主动触发跳转到目标Activity的逻辑!

问题分析

你的onStart方法逻辑是正确的:每次Activity启动(包括App重启、从后台回到前台)时,它会检查当前是否已登录,如果是就直接跳转到ClickP页面。但在登录成功的瞬间,当前的MainActivity并不会重新触发onStart方法,所以尽管用户已经完成登录,界面还是停留在登录页。只有当你把App最小化再打开(触发onStart),或者重启App时,这个检查逻辑才会生效。

解决方案

只需要在Firebase认证成功的回调里,手动添加跳转逻辑即可,和onStart里的逻辑一致:

修改你的firebaseAuthWithGoogle方法,在task.isSuccessful()的分支中添加跳转代码:

private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
    Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId());
    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        FirebaseUser user = mAuth.getCurrentUser();
                        // 添加这两行代码,触发跳转
                        startActivity(new Intent(MainActivity.this, ClickP.class));
                        finish(); // 关闭当前登录页,避免用户按返回键回到登录界面
                    } else {
                        // 可选:添加登录失败的提示,提升用户体验
                        Toast.makeText(MainActivity.this, "登录失败,请重试", Toast.LENGTH_SHORT).show();
                        Log.w(TAG, "signInWithCredential:failure", task.getException());
                    }
                }
            });
}

为什么这样有效?

当Firebase完成认证并返回成功结果时,我们立刻主动启动ClickPActivity,同时关闭当前的登录页。这样登录成功后就能直接进入目标页面,和你重启App后的效果完全一致。

另外,你原来的onStart逻辑可以保留,这样用户后续打开App或者从后台切换回来时,依然能自动跳过登录页,符合你的预期需求。

内容的提问来源于stack exchange,提问作者Ravi Kilnake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:06:40