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
相关产品推荐
相关产品推荐

