2010-09-16 143 views
67

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

+11

请接受您的一些旧问题。 – nothrow 2010-09-16 07:25:49

+0

一个简单的方法是重写onBackPressed或通过keyEvent = Backpressed并在其上调用onHomePressed。那么它将表现得像homePressed – Nepster 2014-05-29 13:27:41

回答

138

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

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

此意向将启动用户已定义的启动器应用程序。请小心,因为如果用户不期望这会看起来像你的应用程序崩溃。

如果你想这从您的应用程序建立一个退出按钮,请阅读这篇文章exit Buttons在Android中

+2

我读过,这是非常错误的应用程序。但为什么人们说呢?我知道我在哪里使用它。看起来这是我做我想做的唯一事情。那么这可以使用它吗? – Enigma 2012-11-19 07:05:04

+4

对我来说最简单的事情是:'startActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME));' (FLAG_ACTIVITY_NEW_TASK似乎不是必要的)。 – Jonik 2013-12-20 18:58:08

+0

这是一个较老的线程,返回到前一个活动的作品不起作用。什么属性呢? – portfoliobuilder 2014-09-25 18:49:14

0

Android developer网站

下面是其他操作的一些例子,你可以为使用这些额外的参数意图注明:

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

stOle提问可以通过快速的谷歌查询和查看文档来回答没有任何问题。如果问题包含正确的关键字,它会很快显示在第一个谷歌页面上,并使查找正确的信息和示例代码快得多,然后查看文档。我是一个训练有素的android程序员,但我不得不谷歌并跳过一两页来回答这个问题。如果这个问题的答案在这里,它可以被编辑,改进,更新和评价,那将是非常好的。 – Janusz 2010-09-16 08:37:37

+0

@Janusz,我的意思不是听起来很刺耳... – st0le 2010-09-16 08:54:35

9

Janusz's answer是巨大的。

我想添加的唯一东西,对评论来说有点太长了,因为您可以在不参考当前活动的情况下进入主屏幕。

需要从一个活动或片段由于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); 
10

一号线解决方案

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

首页按钮被按下

+0

这是工作..这是一个很好的做法..它会在任何情况下工作吗? – Prabs 2015-11-20 05:52:23

+0

在我的情况下,它工作正常。我不确定它是否适用于所有情况 – Nepster 2015-11-26 07:55:21

+0

适用于我(Android 6.x) – 2017-04-26 06:38:38

0

我知道这是有点晚了,但我也遇到了同样的问题,在这里它的行为是怎么解决它。让我们再回到你的MainActivity时需要您按下后退按钮是MainActivity活动之一,从退出的Activity

final Intent mainActivity = new Intent(this, MainActivity.class); 
    mainActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    mainActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 

添加标记现在,它将进入主屏幕。

相关问题