web-dev-qa-db-fra.com

Comment puis-je désactiver le retour à une activité?

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);
    }
}
37
jul

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.

121
Ryan Reeves

Appelez simplement context.finish() après context.startActivity()

20
LeffelMania

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);
9
A. Binzxxxxxx
<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.

2
David Miguel