2017-05-15 92 views
1

我有我的項目登錄,但總是當我關閉它後打開我的應用程序,必須再次登錄。我用火力地堡進行身份驗證,但我想是這樣的:登錄後如何保持會話打開?

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

我不知道我是否有使用SQLite,要麼就是存在如何保持會話活着,即使你關閉應用程序,如果用戶沒有登錄出。

+0

已解決! @Override public void onStart(){ super.onStart(); //檢查用戶是否已登錄(非空)並相應地更新UI。 FirebaseUser currentUser = fAuth.getCurrentUser(); updateUI(currentUser); } 私人無效updateUI(FirebaseUser用戶){ 如果(用戶!= NULL){ startActivity(新意圖(Login.this,MainActivity.class)); } else { //返回登錄 } } –

回答

0

已解決!發現此作品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

因爲使用火力地堡到autenticate,您可以輕鬆地如果用戶autenticated這樣驗證:

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 
     } 
    } 
}; 

不需要的SQLite。希望能幫助到你。

+1

最後一步:'auth.addAuthStateListener(authListener);' –

+0

是的,沒錯。謝謝@BobSnyder! –

+0

感謝您的意見@AlexMamo :)是有用的,但不適合我,我發現另一個選項來做到這一點,看看我的答案,如果你想知道我是如何解決問題的。 –

0

如果當前用戶不爲空,意味着已登錄,否則返回null

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

您可以設置布爾標誌,當你登入sharedpreferences,所以當你加載你的申請確認標誌,如果這是真的調用一些活動,但如果它是錯誤的調用登錄活動。 只記得在用戶註銷時將flag設置爲false。