2017-05-15 8 views
1

Ich habe ein Login in meinem Projekt, aber immer wenn ich meine App öffne, nachdem ich sie geschlossen habe, muss ich mich erneut anmelden. Ich benutze Firebase zu authentifizieren, aber ich möchte so etwas wie:Wie kann ich die Sitzung nach dem Login geöffnet halten?

check if user is logged -> 
if not - open login, 
else - open my main activity" 

Ich weiß nicht, ob ich SQLite oder etwas verwenden, oder existieren, wie Sitzung am Leben zu halten, selbst schließen Sie die Anwendung, wenn der Benutzer nicht anmeldet aus.

+0

Gelöst! @Override public void onStart() { super.onStart(); // Überprüfen Sie, ob der Benutzer angemeldet ist (nicht null) und aktualisieren Sie die Benutzeroberfläche entsprechend. FirebaseUser currentUser = fAuth.getCurrentUser(); updateUI (aktueller Benutzer); } private void updateUI (FirebaseUser user) { if (user = null!) { startActivity (neu Intent (Login.this, MainActivity.class)); } else { // kehrt zum Login zurück } } –

Antwort

0

Gelöst! gefunden und funktioniert 100%

@Override 
    public void onStart() { 
     super.onStart(); 
     // Check if user is signed in (non-null) and update UI accordingly. 
     FirebaseUser currentUser = fAuth.getCurrentUser(); 
     updateUI(currentUser); 
    } 

    private void updateUI(FirebaseUser user) { 
     if (user != null) { 

      startActivity(new Intent(Login.this, MainActivity.class)); 
     } else { 
      //returns to login 
     } 
    } 
1

Weil Sie Firebase verwenden autenticate, können Sie leicht überprüfen, ob ein Benutzer wie diese autenticated ist:

FirebaseAuth auth = FirebaseAuth.getInstance(); 
FirebaseAuth.AuthStateListener authListener = new FirebaseAuth.AuthStateListener() { 
    @Override 
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
     firebaseUser = firebaseAuth.getCurrentUser(); 
     if (firebaseUser != null) { 
      Toast.makeText(MainActivity.this, "You are signed in Firebase!", Toast.LENGTH_SHORT).show(); 
      //Redirect to MainActivity 
     } else { 
      Toast.makeText(MainActivity.this, "You are signed out from Firebase!", Toast.LENGTH_SHORT).show(); 
      //Redirect to LoginActivity 
     } 
    } 
}; 

Keine Notwendigkeit von SQLite. Ich hoffe es hilft.

+1

Und der letzte Schritt: 'auth.addAuthStateListener (authListener);' –

+0

Ja, das stimmt. Danke @BobSnyder! –

+0

Danke für Ihren Kommentar @AlexMamo :) war hilfreich, aber funktioniert nicht für mich, ich fand eine andere Option, dies zu tun, schauen Sie auf meine Antwort, wenn Sie wissen wollen, wie ich das Problem gelöst habe. –

0

Wenn aktuelle Benutzer nicht null ist, angemeldet ist, bedeutet, null sonst

boolean isUserLoggedIn = FirebaseAuth.getInstance().getCurrentUser() != null; 
-1

können Sie boolean-Flag gesetzt, wenn Sie auf sharedpreferences anmelden, so dass, wenn Sie Ihre Anwendung laden Sie diese Flagge überprüfen, ob es wahr ist Rufen Sie einige Aktivitäten an, aber wenn es falsch ist, rufen Sie die Anmeldeaktivität auf. Denken Sie daran, die Flagge beim Abmelden des Benutzers auf false zu setzen.

Verwandte Themen