當用戶在我的android應用上使用firebase帳戶時,他們需要被導向到一個屏幕,他們可以添加一些單獨的信息,例如用戶名。該應用程序知道通過AuthStateListener切換活動,所以當一個帳戶是由或有人在這裏被執行的代碼簽名(無意圖是現在改變了這裏,請繼續閱讀看看爲什麼):如何檢查我的Firebase數據庫是否有特定用戶的數據? (Android/Java)
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數據庫中查看,並查看他們的帳戶是否已有用戶名。我無法弄清楚如何在這種情況下,火力讀取數據,它好像只有這樣才能從數據庫(根據其他人)讀的是通過onDataChange方法,像這樣:
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d(TAG, "This: "+dataSnapshot.getValue());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
它採用dataSnapshots 。與此相關的問題是,只有當數據添加到數據庫時纔會觸發此代碼,因此,當用戶僅僅註冊並且從未向數據庫添加用戶名時,此方法將不會執行任何代碼。如何查詢數據庫中的數據以檢查某個用戶是否有數據?
我明白這一點,但如果沒有任何數據已完成,因爲用戶沒有輸入任何內容,那麼這將不會觸發,它沒有理由。 – dylan
所以爲了幫助我解釋一下我在其中一個應用中使用的方法之一。 –
啊,我現在看到了!非常感謝你 – dylan