我创建了一个新的用户注册屏幕,并且在用户登录后进入登录屏幕
注册用户时,我希望应用程序验证用户是否存在于数据库中(如果该用户存在)。将用户移至主页之前的应用程序可以为该用户打印一些值,例如电子邮件,帐户类型,用户名和帐户状态。是真的还是假的?
但是当我在ANDROID STUDIO CONSOLE上获得(NULL)时
我的登录屏幕
public class LoginScreen extends AppCompatActivity {
private FirebaseAuth mAuth;
FirebaseDatabase database = FirebaseDatabase.getInstance();
final DatabaseReference myRef = database.getReference("users");
final FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login_screen);
final ProgressBar simpleProgressBar = (ProgressBar) findViewById(R.id.loginProgressBar);
simpleProgressBar.setVisibility(View.INVISIBLE);
mAuth = FirebaseAuth.getInstance();
/* mauthlistener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
if (firebaseAuth.getCurrentUser() != null){
}
}
}*/
final String TAG = "MyActivity";
final Button gotosignupbtn = findViewById(R.id.gosignup);
gotosignupbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent gotosignup = new Intent(LoginScreen.this, SignupScreen.class);
startActivity(gotosignup);
finish();
}
});
final EditText email = findViewById(R.id.emaillogin);
final EditText password = findViewById(R.id.passwordlogin);
Button loginbt = findViewById(R.id.loginbtn);
loginbt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
simpleProgressBar.setVisibility(View.VISIBLE);
final String Email = email.getText().toString();
final String Password = password.getText().toString();
mAuth.signInWithEmailAndPassword(Email , Password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
// FirebaseUser userr = FirebaseAuth.getInstance().getCurrentUser();
FirebaseUser user = firebaseAuth.getCurrentUser();
final String userKey = user.getUid();
if (task.isSuccessful()){
simpleProgressBar.setVisibility(View.INVISIBLE);
myRef.child("users").child(userKey).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String userKey = dataSnapshot.child("\n" + "Email").getValue(String.class);
Log.d(TAG, "Name: " + userKey);
/*
userdtails activestatus = dataSnapshot.getValue(userdtails.class);
System.out.println(activestatus);*/
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Toast.makeText(LoginScreen.this, "Authentication ok.",
Toast.LENGTH_SHORT).show();
FirebaseAuth.getInstance().signOut();
}else{
simpleProgressBar.setVisibility(View.INVISIBLE);
Toast.makeText(LoginScreen.this, "Error.",
Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
}
如果您要提取数据,请执行以下操作:
......
myRef.child("users").child(userKey).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//get the data of the user
String accountType = dataSnapshot.child("AcountType").getValue(String.class);
String companyName = dataSnapshot.child("CompanyName").getValue(String.class);
String Email = dataSnapshot.child("Email").getValue(String.class);
String phone = dataSnapshot.child("Phone").getValue(String.class);
String username = dataSnapshot.child("Username").getValue(String.class);
String activestatus = dataSnapshot.child("activestatus").getValue(String.class);
String email = dataSnapshot.child("email").getValue(String.class);
......
......
......