Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从firebase设置用户数据的特定值_Android_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Android 从firebase设置用户数据的特定值

Android 从firebase设置用户数据的特定值,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,在我的应用程序中,我有注册屏幕。它要求输入用户名、电子邮件和密码。我正在将电子邮件和用户名推送到firebase实时数据库。假设现在用户从我的应用程序注销,卸载应用程序并再次安装,然后尝试登录。在登录屏幕中,我只要求输入电子邮件和密码,如何检索用户的用户名。因为用户可能会在注册后卸载应用程序,所以共享优先权将不起作用。我尝试了以下代码,但没有给出正确的输出 mFirebaseDatabase = FirebaseDatabase.getInstance(); mMessagesDatabas

在我的应用程序中,我有注册屏幕。它要求输入用户名、电子邮件和密码。我正在将电子邮件和用户名推送到firebase实时数据库。假设现在用户从我的应用程序注销,卸载应用程序并再次安装,然后尝试登录。在登录屏幕中,我只要求输入电子邮件和密码,如何检索用户的用户名。因为用户可能会在注册后卸载应用程序,所以共享优先权将不起作用。我尝试了以下代码,但没有给出正确的输出

 mFirebaseDatabase = FirebaseDatabase.getInstance();
 mMessagesDatabaseReference = mFirebaseDatabase.getReference().child("userdetails");
 mMessagesDatabaseReference.child( auth.getCurrentUser().getUid()).child("USERNAME")
我的数据库如下所示


如何在登录时获取用户名,因为在登录时只会询问电子邮件和密码。任何帮助都将不胜感激。

为了获得用户名,您需要在该特定节点上附加一个侦听器。请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("userdetails").child(auth.getCurrentUser().getUid()).child("USERNAME");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String USERNAME = dataSnapshot.getValue(String.class);
        Log.d("TAG", USERNAME);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
uidRef.addListenerForSingleValueEvent(eventListener);
您的输出将是:

pritish

我犯了一个错误。java.lang.NullPointerException:println需要一条消息您的auth.getCurrentUser.getUid是否返回正确的用户id?我得到的auth.getCurrentUser.getUid是DXV2xGNXXPNC50IzDNQYAQ30CZ2,但在数据库中完全不同我有一个问题,在您的回答中,第二行应该是rootRef.childuserdetails.childauth.getCurrentUser.getUid;如果我错了,请纠正我哦,是的,我明白了。这就是问题所在。在数据库中添加数据时,不要使用push方法,而是使用auth.getCurrentUser.getUid。当你得到的时候,你肯定会成功的。