Переход на домашний экран программно

android homescreen

73115 просмотра

6 ответа

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

Автор: Sri Sri Источник Размещён: 12.11.2019 09:06

Ответы (6)


163 плюса

Решение

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

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

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

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

Автор: Janusz Размещён: 16.09.2010 08:41

23 плюса

Одноканальное решение

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

он будет вести себя при нажатии кнопки «Домой»

Автор: Xar E Ahmer Размещён: 07.08.2015 07:42

10 плюса

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

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

Код Януша должен быть вызван из действия или фрагмента из-за 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);
Автор: Peter Ajtai Размещён: 15.03.2012 07:50

0 плюса

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

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

* ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.
Автор: st0le Размещён: 16.09.2010 07:48

0 плюса

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

Автор: Jim Размещён: 06.09.2017 10:36

0 плюса

startActivity((new Intent(Intent.ACTION_MAIN)).addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
Автор: rm -rf star Размещён: 12.07.2019 04:42
Вопросы из категории :
32x32