2013-08-31 117 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 
      { 

      } 
     } 
相关问题