web-dev-qa-db-fra.com

Accéder à l'écran d'accueil par programmation

Je veux accéder à l'écran d'accueil par programmation en Android lorsque l'utilisateur clique sur le bouton. Comment cela peut-il être fait?

74
Sri Sri

Vous pouvez le faire via un Intent .

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);

Cette intention démarrera l'application de lancement que l'utilisateur a définie. Soyez prudent avec cela car cela ressemblera à votre application qui a planté si l'utilisateur ne s'y attend pas.

Si vous voulez que cela crée un bouton de sortie à partir de votre application, veuillez lire cet article sur boutons de sortie dans Android

162
Janusz

Solution à une ligne

moveTaskToBack(true); //activity.moveTaskToBack(true);

il se comportera lorsque le bouton Home est enfoncé

21
Xar E Ahmer

réponse de Janusz est super.

La seule chose que je veux ajouter, qui est un peu trop longue pour un commentaire, c'est que vous pouvez aller à l'écran d'accueil sans avoir de référence à l'activité en cours.

Le code de Janusz doit être appelé à partir d'une activité ou d'un fragment en raison de startActivity(),

Pour contourner ce problème, vous pouvez stocker une référence statique au contexte de vos applications dans votre fichier d'application:

public class YourApplication extends Application
{

    private static Context mAppContext;

    public void onCreate()
    {
        super.onCreate();
        ...
        YourApplication.mAppContext = getApplicationContext();
    }

    public static Context getContext()
    {
        return mAppContext;
    }

}

Vous pouvez maintenant envoyer l'utilisateur à l'écran d'accueil de l'appareil à partir de n'importe quelle classe de votre application, pas seulement des activités, des fragments ou d'autres classes avec une référence à l'activité en cours (vous pouvez décider si c'est une bonne ou une mauvaise chose):

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
YourApplication.getContext().startActivity(startMain);
10
Peter Ajtai
startActivity((new Intent(Intent.ACTION_MAIN)).addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
0
rm -rf star

De développeur Android site

Voici quelques exemples d'autres opérations que vous pouvez spécifier comme intentions à l'aide de ces paramètres supplémentaires:

* ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.
0
st0le