因此,我有一个简单的firebase android应用程序,目的是为了满足不同用户的需求。 用户注册,并在创建时,其Uid存储在用户表中,以及其值为'UserType'和'IsCurrentlyTracking'的Uid下的UserInformation条目。 用户登录后会被带到一个配置文件活动,他们可以按一个按钮继续通过该应用程序。 这里是我的表结构: Android - Firebase;在登录时,检索数据(分层)并根据该数据重定向该用户
在按下继续时,它们的UserInformation数据被检索。根据这些数据,他们被重定向到另一项活动。 而不是做上述,应用程序停止/崩溃。
下面是代码/方法将用户重定向:
public void userRedirect(){
firebaseAuth = FirebaseAuth.getInstance();
user = firebaseAuth.getCurrentUser();
final FirebaseDatabase database = FirebaseDatabase.getInstance();
Query q = database.getReference("Users/" + user.getUid() + "/UserInformation");
q.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
UserInformation uI = dataSnapshot.getValue(UserInformation.class);
int userType = uI.getUserType();
boolean ICT = uI.getTrackingStatus();
if ((userType == 1) && (!ICT)) {
finish();
startActivity(new Intent(ProfileActivity.this, AllocationActivity.class));
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
databaseError.getMessage();
}
});
}
我已经能够之前检索数据,尽管没有被存储的信息在“用户”表(只有在用户的UID)用户信息也没有从UiD下载。
对于一些额外的背景下,这是我的用户类:
public int UserType;
public boolean IsCurrentlyTracking;
public UserInformation(int userType, boolean IsCurrentlyTracking){
this.UserType = userType;
this.IsCurrentlyTracking = IsCurrentlyTracking;
}
public int getUserType()
{
return UserType;
}
public boolean getTrackingStatus()
{
return IsCurrentlyTracking;
}
上,我可能会错误任何想法? 预先感谢您。
谢谢你的回答Faraz。我会重组,看看我如何继续。另外,感谢数据库规则中的访问强化。 –