以编程方式进入主屏幕

Sri*_*Sri 74 android homescreen

我想在用户点击按钮时以编程方式进入主界面.如何才能做到这一点?

Jan*_*usz 164

你可以通过Intent来做到这一点.

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
Run Code Online (Sandbox Code Playgroud)

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

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

  • 最简单的方法对我有用:`startActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME));`(FLAG_ACTIVITY_NEW_TASK似乎没有必要.) (6认同)
  • 我已经读到在应用程序中这是非常错误的.但人们为什么这么说呢?我知道我在哪里使用它.而且看起来这是我唯一可以做我想做的事情.这样可以使用它吗? (3认同)
  • @portfoliobuilder,你只需要删除FLAG_ACTIVITY_NEW_TASK. (2认同)

Xar*_*mer 23

一线解决方案

moveTaskToBack(true); //activity.moveTaskToBack(true);
Run Code Online (Sandbox Code Playgroud)

当按下Home按钮时它会表现出来


Pet*_*tai 10

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

}
Run Code Online (Sandbox Code Playgroud)

现在,你可以从任何类的当前活动的参考发送用户设备主屏幕在您的应用程序,而不仅仅是活动,片段或其他类(你可以决定这是否是好事还是坏事):

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
YourApplication.getContext().startActivity(startMain);
Run Code Online (Sandbox Code Playgroud)