Переход на домашний экран программно - PullRequest
73 голосов
/ 16 сентября 2010

Я хочу перейти на главный экран программно в Android, когда пользователь нажимает кнопку. Как это можно сделать?

Ответы [ 6 ]

162 голосов
/ 16 сентября 2010

Вы можете сделать это через Намерение .

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

Это намерение запустит приложение запуска, которое определил пользователь.Будьте осторожны с этим, потому что это будет выглядеть как сбой вашего приложения, если пользователь этого не ожидает.

Если вы хотите, чтобы это создавало кнопку выхода из вашего приложения, прочтите эту статью на Кнопках выхода в Android

20 голосов
/ 07 августа 2015

Решение в одну строку

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

будет вести себя при нажатии кнопки Home

10 голосов
/ 15 марта 2012

Ответ Януша великолепен.

Единственное, что я хочу добавить, что слишком долго для комментария, это то, что вы можете перейти на домашний экран, не имеяссылка на текущее действие.

Код Януша должен вызываться из действия или фрагмента из-за startActivity(),

Чтобы обойти это, вы можете сохранить статическую ссылку на ваши приложения. Контекств файле приложения:

public class YourApplication extends Application
{

    private static Context mAppContext;

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

    public static Context getContext()
    {
        return mAppContext;
    }

}

Теперь вы можете отправлять пользователя на домашний экран устройства из любого класса в вашем приложении, а не только из «Деятельности», «Фрагментов» или других классов со ссылкой на текущую активность (выможет решить, хорошо это или плохо):

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
YourApplication.getContext().startActivity(startMain);
0 голосов
/ 12 июля 2019
startActivity((new Intent(Intent.ACTION_MAIN)).addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
0 голосов
/ 06 сентября 2017

Я знаю, что это немного поздно, но я столкнулся с той же проблемой, и вот как я решил ее. Возвращаясь к вашему MainActivity, вам нужно добавить флаги с выхода Activity

    final Intent mainActivity = new Intent(this, MainActivity.class);
    mainActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    mainActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);

Теперь, когда вы нажали кнопку возврата, будучи MainActivity активной, она перейдет на домашний экран.

0 голосов
/ 16 сентября 2010

От Android-разработчик сайт

Вот несколько примеров других операций, которые можно указать в качестве намерений с помощью этих дополнительных параметров:

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