77

当用户单击按钮时,我想以编程方式在 Android 中转到主屏幕。如何才能做到这一点?

4

6 回答 6

180

您可以通过Intent做到这一点。

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

此 Intent 将启动用户定义的启动器应用程序。请注意这一点,因为如果用户不希望发生这种情况,这看起来就像您的应用程序崩溃了。

如果您希望它从您的应用程序中构建一个退出按钮,请阅读这篇关于Android中的退出按钮的文章

于 2010-09-16T08:41:10.080 回答
31

一条线解决方案

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

它将表现为按下主页按钮

于 2015-08-07T07:42:36.093 回答
11

Janusz 的回答很棒。

我想补充的唯一一点(评论有点太长)是您可以转到主屏幕而无需参考当前活动。

Janusz 的代码需要从 Activity 或 Fragment 调用,因为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);
于 2012-03-15T19:50:17.517 回答
1

来自Android 开发者网站

以下是您可以使用这些附加参数指定为意图的其他操作的一些示例:

* ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.
于 2010-09-16T07:48:09.407 回答
1
startActivity((new Intent(Intent.ACTION_MAIN)).addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
于 2019-07-12T04:42:42.380 回答
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活动按钮的后退按钮时,它将转到主屏幕。

于 2017-09-06T10:36:06.350 回答