【发布时间】:2017-07-16 19:13:32
【问题描述】:
当用户在我的 Android 应用上使用 firebase 创建帐户时,他们需要被引导到一个屏幕,他们可以在其中添加一些单独的信息,例如用户名。该应用程序知道通过 AuthStateListener 切换活动,因此当创建帐户或有人登录时,此处的代码将被执行(此处目前没有更改意图,请继续阅读以了解原因):
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
userID = user.getUid();
toastMessage("User has signed in: " + user.getEmail());
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
// ...
}
};
在 if 块中检查用户是否不等于 null,这就是我需要将意图更改为另一个活动的地方,他们将在其中输入用户名。基本上逻辑是,如果用户已经有用户名并且他们刚刚登录,那么他们将被引导到主屏幕活动,如果他们正在注册,他们需要被引导到他们制作用户名的活动。要知道我需要将他们发送到哪个活动,我需要在 firebase 数据库中查看代码,并查看他们的帐户是否已经有用户名。在这种情况下,我无法弄清楚如何从 firebase 读取数据,似乎从数据库中读取数据的唯一方法(根据其他人的说法)是通过这样的 onDataChange 方法:
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d(TAG, "This: "+dataSnapshot.getValue());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
使用数据快照。问题是只有在将数据添加到数据库时才会触发此代码,因此当用户只是注册并且从未将用户名添加到数据库时,此方法不会执行任何代码。如何查询以查看数据库中的数据只是为了检查某个用户是否有任何数据?
【问题讨论】:
标签: java android firebase firebase-realtime-database firebase-authentication