我正在检查当前用户是否已登录我的应用程序,并且从未注销过。如果为true,则在启动我的应用程序后,它将打开Activity A / B,具体取决于存储在数据库中的userDepartment
的值。
我的代码如下:
firebaseAuth = FirebaseAuth.getInstance();
FirebaseUser user = firebaseAuth.getCurrentUser();
//user has logged in and never once logged out. auto bring to the specific dashboard page based on account type.
if (user != null) {
finish();
final String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("userDepartment").child(uid);
if (databaseReference.equals("Administrator")) {
startActivity(new Intent(MainActivity.this, SecondActivity.class));
} else {
startActivity(new Intent(MainActivity.this, LocalUserDashboard.class));
}
}
该逻辑不起作用,因为当我以管理员身份登录时,关闭应用程序但未注销,预期结果是管理员用户将被带到SecondActivity
类。但是,它改为打开LocalUserDashboard
类。然后,如果我以本地用户身份登录,请关闭该应用程序但未退出,这确实使我进入了LocalUserDashboard
类,
我不确定我的代码是否正确,同时取决于SO中的各种来源以及官方文档,还只是将所有内容混在一起了。
请帮助我。谢谢。
下面是我的数据库结构:
答案 0 :(得分:1)
您直接与databaseReference进行比较,请首先执行请求,以使用受尊敬的userId从Firebase获取数据
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot!=null)
{
String userDepartment = dataSnapshot.child("userDepartment").getValue());
//Now check with this userDepartment
if (userDepartment .equals("Administrator")) {
startActivity(new Intent(MainActivity.this, SecondActivity.class));
} else {
startActivity(new Intent(MainActivity.this, LocalUserDashboard.class));
}
}
}