web-dev-qa-db-fra.com

Comment lancer l'écran d'accueil par programme dans Android

Je veux lancer l'écran d'accueil de Android avec mon application. L'objectif principal est de montrer toutes les applications à l'utilisateur lorsqu'il appuie sur une touche spécialisée. En fait, le chemin n'est pas important. Tout idée de faire ça?

21
sjor

Voici le code pour démarrer HomeActivity

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

Les commentaires que vous avez faits sur certaines des réponses suggèrent que vous souhaitez réellement lancer le lanceur (vous voudrez peut-être mettre à jour le titre si tel est le cas). Pour ce faire, utilisez la même approche qu'Anand a proposée pour lancer l'activité à domicile.

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_LAUNCHER);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
11
MM.

Il n'y a pas "d'écran qui montre les applications avec leurs icônes aux utilisateurs" dans Android.

Ce à quoi vous pensez est une fonctionnalité de certains écrans d'accueil. Il n'y a pas de Intent standardisé pour déclencher cette apparition, et il n'est pas nécessaire que les écrans d'accueil aient une telle fonctionnalité.

Vous êtes invités à écrire le vôtre. Voici un exemple de projet qui affiche les activités lancables dans un ListView.

5
CommonsWare

essayez quelque chose comme ça pour cliquer sur le bouton retour tout ce que vous obtiendrez à l'écran d'accueil/...

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // Display confirmation here, finish() activity.
        Intent startMain = new Intent(Intent.ACTION_MAIN);
        startMain.addCategory(Intent.CATEGORY_HOME);
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(startMain);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

Je pense que je suis très en retard à la fête, mais j'avais une préoccupation similaire. Les réponses données ici lancent un menu de sélection qui vous permet de choisir le lanceur. Si vous avez plus d'un lanceur dans votre code, la réponse ici: https://stackoverflow.com/a/8666155 pourrait être utile. Ceci directement lance l'écran d'accueil par défaut d'Android.

1
radioactivet

Aucune des solutions ici ne fonctionne pour moi.

Je l'ai fait fonctionner en utilisant le code ci-dessous

PackageManager pm = getPackageManager();
Intent i = new Intent("Android.intent.action.MAIN");
i.addCategory("Android.intent.category.HOME");
List<ResolveInfo> lst = pm.queryIntentActivities(i, 0);
if (lst != null) {
   for (ResolveInfo resolveInfo : lst) {
       try {
       Intent home = new Intent("Android.intent.action.MAIN");
       home.addCategory("Android.intent.category.HOME");
       home.setClassName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name);
       startActivity(home);
       break;
       } catch (Throwable t) {
           t.printStackTrace();
       }
   }
}

Je l'ai obtenu de: https://stackoverflow.com/a/16483596/124178

J'espère que cela aide quelqu'un

1
Bruce

Je ne suis pas sûr de bien comprendre ce que vous essayez de faire! Mais si vous voulez dire que vous voulez que l'utilisateur puisse accéder à une autre application en cliquant à l'intérieur de votre application, vous devriez vérifier "intention". Exécutez le exemple de code API DEMO dans Eclipse et exécutez App -> Intents

1
theAlse

Cela fonctionne bien pour moi!

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

quelqu'un peut-il expliquer pourquoi nous en avons besoin?

startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

btw, c'est ce que je cherchais

moveTaskToBack(true);
0
ShAkKiR

Je l'ai atteint en utilisant une ligne

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

Il se comporte comme le bouton d'accueil

0
Jawad Zeb