I have two Activity, the main MyActivity and LoginActivity, how do I get the application to detect logged-in users when I open the application? And how do you do when the user presses the back button, the Activity LoginActivity does not return to t
I have two Activity, the main MyActivity and LoginActivity, how do I get the application to detect logged-in users when I open the application? And how do you do when the user presses the back button, the Activity LoginActivity does not return to t
One way to do this is:
public class AtividadeInicial extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
exibeTelaPrincipalOuSolicitaLogin();
finish();
}
private void exibeTelaPrincipalOuSolicitaLogin() {
Intent intent = new Intent(this, usuárioEstáLogado() ? AtividadePrincipal.class : AtividadeLogin.class);
startActivity(intent);
}
private boolean usuárioEstáLogado() {
// Sua implementação que retorna se o usuário está logado ou não,
// obtida por exemplo verificando se o token de autenticação
// guardado em SharedPreferences é diferente de null.
}
}
If you preserve authentication between Web Services calls through a token that has time to expire on the server, the login condition may become invalid if the user is left a long time without navigating the application and the token expires. In this case it may be necessary to close all% open% and request login again, which can be done by calling the Activities
method below:
public abstract class AtividadeEmQueOUsuárioEstáLogado {
protected void efetuarLogoffEVoltarParaATelaDeLogin() {
invalidarTokenDeAutenticação();
fecharTodasAsTelasEAbrirTelaDeLogin();
}
private void invalidarTokenDeAutenticação() {
// Sua implementação que invalida o token atual
// (por exemplo setando-o para null)
}
private void fecharTodasAsTelasEAbrirTelaDeLogin() {
Intent intent = new Intent(this, AtividadeLogin.class); // ou AtividadeInicial.class
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
}
public class AtividadePrincipal extends AtividadeEmQueOUsuárioEstáLogado {
public métodoQualquer() {
if (chameiUmWebServiceEConstateiQueOTokenExpirou) {
efetuarLogoffEVoltarParaATelaDeLogin();
}
}
}
You may want to make the methods efetuarLogoffEVoltarParaATelaDeLogin()
and usuárioEstáLogado()
globally accessible so you can use them elsewhere, including them in a conventional class or subclass of invalidarTokenDeAutenticação()
and eventually making them static ( Application
).
Dude, you can save the user to the sqlite database.
And for the back button, you can use a class called Intent, in which case when you click the back button VC does something like:
intent = new intent(minhaactivity.class)
startactivity(intento);// isso ira abrir outra activity
Official doc example: link