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?
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);
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);
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
.
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.
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
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
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);
Je l'ai atteint en utilisant une ligne
moveTaskToBack(true); //activity.moveTaskToBack(true);
Il se comporte comme le bouton d'accueil