Je ne veux pas que l'utilisateur puisse revenir à l'écran de démarrage de mon application. Une solution semble être de vérifier si l'activité en dessous de l'activité actuelle est une instance de l'écran de démarrage, et dans ce cas, quittez l'application, comme indiqué dans le code ci-dessous. Cependant, je ne sais pas comment vérifier quelle est l'activité précédente dans la pile. Quelqu'un peut-il aider? Existe-t-il un autre moyen de désactiver le retour à une activité donnée?
@Override
public void onBackPressed() {
if(<previous activity in stack is an instance of splashscreen>){
Intent exit_intent=new Intent(CurrentActivity.this, SplashScreen.class);
exit_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
exit_intent.putExtra("EXIT", true);
context.startActivity(exit_intent);
}
}
Appelez finish()
dans votre activité Splash Screen juste après avoir démarré l'activité suivante.
Une autre approche consiste à ajouter cet attribut à votre activité dans AndroidManifest.xml
: Android:noHistory="true"
Exemple:
<activity Android:name=".SplashActivity" Android:noHistory="true"/>
Cet attribut indique à Android de supprimer SplashActivity de la pile d'historique une fois sa navigation terminée.
Appelez simplement context.finish()
après context.startActivity()
essayez ce qui suit lorsque vous appelez le Activity
suivant à partir de votre écran de démarrage:
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
<activity Android:name=".SplashActivity" Android:noHistory="true"/>
De la documentation :
Indique si l'activité doit être supprimée de la pile d'activités et terminée (sa méthode finish () appelée) lorsque l'utilisateur s'éloigne d'elle et qu'elle n'est plus visible à l'écran - "vrai" si elle doit être terminée et "faux" si non. La valeur par défaut est "false".
Une valeur "vrai" signifie que l'activité ne laissera pas de trace historique. Il ne restera pas dans la pile d'activités de la tâche, donc l'utilisateur ne pourra pas y revenir. Dans ce cas, onActivityResult () n'est jamais appelé si vous démarrez une autre activité pour un résultat de cette activité.
Cet attribut a été introduit dans l'API niveau 3.