Вопрос

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

Это было полезно?

Решение

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

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

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

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

Другие советы

Одно строчное решение

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

Он будет вести себя как домашняя кнопка нажата

Ответ Януш отлично.

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

Код Януш должен быть вызван из деятельности или фрагмента из-за 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);

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

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

* ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.
startActivity((new Intent(Intent.ACTION_MAIN)).addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));

Я знаю, что это немного поздно, но я также побежал в ту же проблему, и вот как я это решил. Возвращаясь к вашему 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 Активный, он пойдет на главный экран.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top