以编程方式进入主屏幕

时间:2010-09-16 07:22:12

标签: android homescreen

当用户点击按钮时,我想在Android中以编程方式进入主屏幕。怎么办呢?

6 个答案:

答案 0 :(得分:162)

您可以通过Intent执行此操作。

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

此Intent将启动用户已定义的启动器应用程序。请注意这一点,因为如果用户不期望这样,应用程序就会崩溃。

如果您希望从应用中构建退出按钮,请阅读Android中exit Buttons上的这篇文章

答案 1 :(得分:18)

一线解决方案

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

按下主页按钮

答案 2 :(得分:10)

Janusz's answer很棒。

我想要添加的唯一内容(评论时间太长)是您无需参考当前活动即可转到主屏幕。

由于startActivity()

需要从活动或片段中调用Janusz的代码

要解决此问题,您可以在应用程序文件中存储应用程序上下文的静态引用:

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);

答案 3 :(得分:0)

来自Android developer网站

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

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

答案 4 :(得分:0)

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

答案 5 :(得分:-1)

我知道这有点晚了但我也遇到了同样的问题,这就是我如何解决它。回到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时,它将进入主屏幕。