2013-08-31 1 views
0

Я имею дело с facebook sdk в своем приложении для Android. Что я здесь делаю, когда пользователь нажимает значок приложения, пользователь сначала увидит кнопку для входа через Facebook в мое приложение. Когда пользователь clikcs на этой кнопке Login, пользователь будет перенаправлен на экран входа в facebook, где пользователь должен ввести имя пользователя и пароль. После успешного входа в систему пользователь будет перенаправлен на вторую активность. Теперь я хочу, чтобы после использования приложения, когда пользователь нажимает кнопку «домой» или кнопку «Назад», и снова нажимает значок приложения, тогда пользователь не должен перенаправляться на первую активность с кнопкой «Вход», вместо этого пользователь должен быть направлен на вторую активность приложение, поскольку сеанс открыт. Этот случай должен оставаться до выхода пользователя из системы. Как я могу это сделать?Запуск второй активности

ответ

0

Я не знаком с Facebook SDK, но это общий способ решения проблемы такого рода:

  1. Когда пользователь входит в систему, сохранить его идентификатор сессии или что-то Facebook называет вас обратно.
  2. Сохраните это в файле
  3. Когда ваше приложение перезагрузится, посмотрите на этот файл и попробуйте выпустить простой вызов API Facebook с этим идентификатором сеанса. В случае успеха запустите новый Intent для вашего второго действия.
  4. Если нет, приступайте к первому действию.

Примечание: Позаботьтесь о шифровании файла.

1

С добавлением splashActivity к вашему приложению вы можете получить решение ..... splashActivity должна быть запуском активности и в методе OnSreate для splashActivity вы можете проверить, если Facebook Session Valid, а затем перенаправляет на вторую активность, иначе вызовите первую активность ....

1

Я думаю, что вы должны использовать предпочтение именно тому, что вы хотите. Используйте один флаг как 'Y' или 'N'. при успешном входе пользователя в ваше приложение поставьте флаг как 'Y' и не меняйте его до выхода из системы. когда пользователь нажимает на кнопке выхода из системы поместить значение флага, как «N»

  • И, наконец, вы должны проверить значение ваших предпочтений по вашему начиная деятельность.

Edit: По вашему требованию

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

как можно это проверить? Значит, мне нужно написать этот код в методе Restart? –

+0

вы должны проверить свою первую активность. как ваш флаг передает намерение. – Andrain

+0

Но я не хочу, чтобы каждое действие выполнялось каждый раз. Если сеанс открыт, а пользователь нажимает значок приложения, то он должен быть направлен на второе действие. –

0

Наконец, нашел решение ... Working ...

@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 
      { 

      } 
     }