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

如何在Android Studio中用Firebase Auth实现两类用户登录跳转不同Activity

修复方案

核心问题说明

  • 字符串比较逻辑错误:Java 中==运算符用于字符串对比时,判断的是两个字符串对象的内存地址是否相同,而非字符串内容是否一致,对比内容需要调用equals()方法
  • 缺少学生邮箱格式匹配逻辑:现有代码仅判断了管理员邮箱,没有针对学生账号的@students.schoolname.com后缀做校验

修正后代码

btnLogin.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String email = lEmail.getText().toString().trim();
        String password = lPassword.getText().toString().trim();
        fAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(Task<AuthResult> task) {
                if(task.isSuccessful()){
                    Toast.makeText(Login.this, "Logged In Successfully", Toast.LENGTH_SHORT).show();
                    userID = fAuth.getCurrentUser().getUid();
                    FirebaseUser user = fAuth.getCurrentUser();
                    if (!user.isEmailVerified()) {
                        startActivity(new Intent(getApplicationContext(), Verify.class));
                    } else {
                        String emailcheck = user.getEmail();
                        // 管理员判断改用equals方法对比内容,固定值在前避免空指针
                        if ("admin@gmail.com".equals(emailcheck)){
                            startActivity(new Intent(getApplicationContext(), Admin.class));
                        } 
                        // 新增学生邮箱后缀匹配逻辑
                        else if (emailcheck != null && emailcheck.endsWith("@students.schoolname.com")) {
                            // 替换为实际的学生专属Activity类名即可
                            startActivity(new Intent(getApplicationContext(), StudentHome.class));
                        }
                        else {
                            // 非预设类型账号跳转默认页,也可自行增加错误提示
                            startActivity(new Intent(getApplicationContext(), HomePage.class));
                        }
                    }
                }
                // 补充原代码缺失的登录失败处理逻辑
                else {
                    Toast.makeText(Login.this, "登录失败:" + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
});

额外注意事项

  • 注意补全原代码缺失的右大括号,避免出现编译报错
  • 如果后续需要调整管理员账号或者学生邮箱后缀,直接修改对应判断条件即可,不需要改动整体逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:15:04