0

Ich verwende die Kennwortauthentifizierung von firebase. Ich habe meine App mit firebase registriert und die E-Mail/Passwort-Authentifizierung aktiviert. In meinem MainActivity, habe ich Anmelde-und Anmelde-Taste, die Anmelde-und Login-Aktivität öffnet.Wenn es eine erfolgreiche Anmeldung/Anmeldung ist, ich den Benutzer auf ImageActivity umleiten. Bis dahin funktioniert es gut. Wenn der Benutzer sich in ImageActivity befindet und wenn er/sie die Taste zurück drückt, sollte die App geschlossen werden, aber stattdessen werde ich zur Anmeldung/Anmeldung Aktivität genommen. Ich habe bereits den folgenden Code in onCreate von beiden Login/Signup Activity geschrieben.Überprüfen Sie, ob sich der Benutzer mit der Kennwortauthentifizierung in Firebase angemeldet hat.

auth = FirebaseAuth.getInstance(); 

     if (auth.getCurrentUser() != null) { 
      startActivity(new Intent(LoginActivity.this, ImageActivity.class)); 
      finish(); 
     } 

Ich habe diesen Code in meinem schrieb auch MainActivityonCreate. Bitte helfen

Antwort

2

Um dieses Problem zu verhindern, dass Sie einige Dinge tun können

Erstens: Wenn Sie ImageActivity starten Sie den hinteren Stapel löschen und Sie sollten diese Bildaktivität erklären als eine neue Aufgabe. Dazu müssen Sie in LoginActivity oder SignupActivity folgenden Code schreiben sollte

auth = FirebaseAuth.getInstance(); 

    if (auth.getCurrentUser() != null) { 
     Intent intent = new Intent(LoginActivity.this, ImageActivity.class); // Change LoginActivity to SignupActivity if you are calling ImageActivity from SignupActivity 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
     finish(); 
    } 

Wenn Sie Anmelden/LoginActivity von MainActivity beginnen, stellen Sie sicher, dass Sie das gleiche tun, wenn Sie LoginActivity und SignupActivity von MainActivity starten.

Danach implementieren onBackPressed auf Ihre ImageActivity-Klasse. Und rufe finish() in onBackPressed auf. Der Code ist unter

@Override 
public void onBackPressed() { 
    finish(); 
} 

Nachdem Sie das getan Ich hoffe, dass Ihr Problem gelöst werden.

+0

eingefügt habe ich gerade hinzugefügt diese Zeile intent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); Es funktioniert. Vielen Dank – Pritish

+0

Ich bin sehr glücklich, Ihnen zu helfen! –

0

prüfen

mAuth.signInWithEmailAndPassword(email, password) 
    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 
      if (task.isSuccessful()) { 
       // Sign in success, update UI with the signed-in user's information 
       Log.d(TAG, "signInWithEmail:success"); 
       FirebaseUser user = mAuth.getCurrentUser(); 
       updateUI(user); 
      } else { 
       // If sign in fails, display a message to the user. 
       Log.w(TAG, "signInWithEmail:failure", task.getException()); 
       Toast.makeText(EmailPasswordActivity.this, "Authentication failed.", 
         Toast.LENGTH_SHORT).show(); 
       updateUI(null); 
      } 

      // ... 
     } 
    }); 
+0

verweisen: https://firebase.google.com/docs/auth/android/password-auth –

+0

auth.signInWithEmailAndPassword (E-Mail, Passwort) .addOnCompleteListener (LoginActivity.this, neue OnCompleteListener () {@Override public void onComplete (@NonNull Aufgabe Aufgabe) progressBar.setVisibility (View.GONE); if (! task.isSuccessful()) { if (passwort.length() <6) {inputPassword.setError (getString (R.string.minimum_password));} else {Toast.makeText (LoginActivity.this, "fail", Toast.LENGTH_LONG) .show();}} else {Absicht intent = neue Absicht (LoginActivity.this, ImageActivity.class) ; startActivityForResult (intent, 1); finish();}}}); – Pritish

+0

Sie müssen überprüfen ** password.length() **, bevor Sie es auf ** auth.signInWithEmailAndPassword (E-Mail, Passwort) ** –

Verwandte Themen