2013-08-31 39 views
0

我正在處理我的Android應用程序中的Facebook SDK。我在這裏做的是,當用戶按下應用程序圖標時,用戶將首先在我的應用程序中看到通過Facebook登錄的按鈕。當用戶點擊此登錄按鈕時,用戶將被引導至Facebook登錄屏幕,用戶必須輸入用戶名和密碼。成功登錄後,用戶將被引導至第二個活動。現在,我想要的是,當用戶按下home按鈕或後退按鈕後,再次按下應用程序的圖標後,使用應用程序後,用戶不應該被定向到具有Login按鈕的第一個活動,而應該將用戶定向到第二個活動應用程序,因爲會話打開。這種情況應該保持直到用戶註銷。我怎樣才能做到這一點?推出第二個活動

回答

0

我不是那麼熟悉Facebook的SDK,但是這是解決此類問題的常用方法:

  1. 當用戶登錄,拯救他的會話ID或任何Facebook的叫你回來。
  2. 將其保存到文件
  3. 當您的應用程序重新啓動時,請查看該文件並嘗試使用該會話ID發出簡單的Facebook API調用。如果成功,開始新的Intent到您的第二個活動。
  4. 如果不是,繼續第一個活動。

注意:注意加密文件。

1

通過添加splashActivity到您的應用程序,您可以得到解決方案..... splashActivity必須是啓動器活動,並在splashActivity的OnCreate方法,您可以檢查如果Facebook會話有效然後重定向到第二個活動,否則調用第一個活動....

1

我認爲你應該使用偏好爲你想要的東西。使用一個標誌作爲'Y''N'。當用戶在您的應用程序中成功登錄時,將標誌置爲'Y',並且在註銷之前不要更改它。當註銷按鈕用戶點擊放標誌值「N」

  • 最後你必須在你 開始活動,以檢查自己的喜好的價值。

編輯:根據您的要求

Context activityContext; 
SessionManager objSessionManager; 
    public class MainActivity extends Activity 
    { 
     @Override 
     protected void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.login_page); 
      activityContext = MainActivity.this; 

      objSessionManager = new SessionManager(activityContext); // My preference 

      if(objSessionManager.isLoggedIn()) // checking for flag 
      { 
       Intent i = new Intent(activityContext ,Your_Second_Activity.class); 
       i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       startActivity(i); 
       finish(); 
      } 
        else 
        { 
          // put your code here of First Activity that is Facebook login. 
        } 
     } 
    } 

希望它會幫助你。

+0

如何檢查呢?意味着我必須在重新啓動方法上編寫此代碼? –

+0

你應該檢查你的第一個活動。根據你的國旗傳遞意圖。 – Andrain

+0

但我不想每次都要進行第一次活動。如果會話打開並且用戶按下應用程序圖標,則應將其指向第二個活動 –

0

最後,找到了解決辦法... ...工作

@Override 
     protected void onResume() { 
      super.onResume(); 
      Session session = Session.getActiveSession(); 

      if (session != null && session.isOpened()) 
      { 
       Intent in = new Intent(getBaseContext(), NextActivity.class); 
       startActivity(in); 

      } 
      else 
      { 

      } 
     } 
相關問題