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?
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
Solution à une ligne
moveTaskToBack(true); //activity.moveTaskToBack(true);
il se comportera lorsque le bouton Home est enfoncé
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);
startActivity((new Intent(Intent.ACTION_MAIN)).addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
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.