Я имею дело с facebook sdk в своем приложении для Android. Что я здесь делаю, когда пользователь нажимает значок приложения, пользователь сначала увидит кнопку для входа через Facebook в мое приложение. Когда пользователь clikcs на этой кнопке Login, пользователь будет перенаправлен на экран входа в facebook, где пользователь должен ввести имя пользователя и пароль. После успешного входа в систему пользователь будет перенаправлен на вторую активность. Теперь я хочу, чтобы после использования приложения, когда пользователь нажимает кнопку «домой» или кнопку «Назад», и снова нажимает значок приложения, тогда пользователь не должен перенаправляться на первую активность с кнопкой «Вход», вместо этого пользователь должен быть направлен на вторую активность приложение, поскольку сеанс открыт. Этот случай должен оставаться до выхода пользователя из системы. Как я могу это сделать?Запуск второй активности
ответ
Я не знаком с Facebook SDK, но это общий способ решения проблемы такого рода:
- Когда пользователь входит в систему, сохранить его идентификатор сессии или что-то Facebook называет вас обратно.
- Сохраните это в файле
- Когда ваше приложение перезагрузится, посмотрите на этот файл и попробуйте выпустить простой вызов API Facebook с этим идентификатором сеанса. В случае успеха запустите новый
Intent
для вашего второго действия. - Если нет, приступайте к первому действию.
Примечание: Позаботьтесь о шифровании файла.
С добавлением splashActivity к вашему приложению вы можете получить решение ..... splashActivity должна быть запуском активности и в методе OnSreate для splashActivity вы можете проверить, если Facebook Session Valid, а затем перенаправляет на вторую активность, иначе вызовите первую активность ....
Я думаю, что вы должны использовать предпочтение именно тому, что вы хотите. Используйте один флаг как '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.
}
}
}
Надеется, что это поможет.
Наконец, нашел решение ... 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
{
}
}
как можно это проверить? Значит, мне нужно написать этот код в методе Restart? –
вы должны проверить свою первую активность. как ваш флаг передает намерение. – Andrain
Но я не хочу, чтобы каждое действие выполнялось каждый раз. Если сеанс открыт, а пользователь нажимает значок приложения, то он должен быть направлен на второе действие. –