0

Ich folgte der API-Dokumentation zum Einrichten der Benutzerauthentifizierung. Meine registerActivity sendet korrekt Daten an die Firebase-Datenbank, aber wenn ich versuche, die Anmeldung Authentifizierung für meine loginActivity einzurichten, geht die Anmeldeschaltfläche nicht auf die mainActivity, wie ich es erwarte. Ist etwas falsch mit meiner Benutzeranmeldung eingerichtet oder gibt es vielleicht eine andere Möglichkeit, Absicht für die Login-Schaltfläche zu verwenden?Android Studio Firebase-Authentifizierung (Fix-Version von Google-Diensten)

public class LoginActivity extends AppCompatActivity { 

private EditText emailField; 
private EditText passwordField; 

private Button loginButton; 

private FirebaseAuth loginAuth; 
private FirebaseAuth.AuthStateListener loginAuthListener; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login3); 

    loginAuth = FirebaseAuth.getInstance(); 

    emailField = (EditText) findViewById(R.id.emailField); 
    passwordField = (EditText) findViewById(R.id.passwordField); 
    loginButton = (Button) findViewById(R.id.loginButton); 

    final TextView RegisterLink = (TextView) findViewById(R.id.registerLink); 

    loginAuthListener = new FirebaseAuth.AuthStateListener(){ 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth){ 
      if(firebaseAuth.getCurrentUser() != null){ 
       startActivity(new Intent(LoginActivity.this, MainActivity.class)); 
      } 
     } 
    }; 

    RegisterLink.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent registerIntent = new Intent(LoginActivity.this, RegisterActivity.class); 
      LoginActivity.this.startActivity(registerIntent); 
     } 
    }); 

    loginButton.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View view){ 
      startSignIn(); 
     } 
    }); 
} 

@Override 
protected void onStart(){ 
    super.onStart(); 

    loginAuth.addAuthStateListener(loginAuthListener); 
} 



private void startSignIn(){ 
    String email = emailField.getText().toString(); 
    String password = passwordField.getText().toString(); 

    if(TextUtils.isEmpty(email) || TextUtils.isEmpty(password)){ 
     if(TextUtils.isEmpty(email)){ 
      Toast.makeText(LoginActivity.this, "Email Field is Empty", Toast.LENGTH_LONG).show(); 

     }else if(TextUtils.isEmpty(password)){ 
      Toast.makeText(LoginActivity.this, "Password Field is Empty", Toast.LENGTH_LONG).show(); 

     } else{ 
      Toast.makeText(LoginActivity.this, "Email Field and Password Field are Empty", Toast.LENGTH_LONG).show(); 
     } 


    } else { 

     loginAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() { 
      @Override 
      public void onComplete(@NonNull Task<AuthResult> task) { 
       if(!task.isSuccessful()){ 
        Toast.makeText(LoginActivity.this,"Either the Password or Email Field is Incorrect. Please Try Again.", Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
    } 

} 

}

Antwort

0

ich auf der Log-Konsole sah, während die App ausgeführt und festgestellt, dass die Version von Google-Diensten der Emulator auf war nicht aktuell ausgeführt wurde. Um das Problem zu beheben, können Sie entweder ...

  • Führen Sie die App auf einem echten Android-Gerät
  • Achten Sie darauf, die gleiche Version von allen Abhängigkeiten verwenden (alle sind 9,8, alle sind 10.0.
  • Vergewissern Sie sich, dass Sie auf "Projekt mit Gradle-Dateien synchronisieren" in Ihrer Android Tool-Liste klicken