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

