23

我想用我的应用程序启动 Android 的主屏幕。主要目标是在用户按下专用键时向用户显示所有应用程序。其实方式并不重要。有什么想法吗?

4

9 回答 9

59

这是启动 HomeActivity 的代码

        Intent startMain = new Intent(Intent.ACTION_MAIN);
        startMain.addCategory(Intent.CATEGORY_HOME);
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(startMain);
于 2011-01-21T08:55:51.727 回答
11

您对某些答案的评论表明您实际上想要启动 Launcher(如果是这种情况,您可能需要更新标题)。为此,请使用 Anand 提出的启动家庭活动的相同方法。

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_LAUNCHER);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
于 2012-02-21T11:45:53.473 回答
6

Android 中没有“向用户显示应用程序及其图标的屏幕”。

您正在考虑的是某些主屏幕的功能。没有标准Intent可以触发这个出现,也没有要求主屏幕有这样的功能。

欢迎您自己编写。这是一个示例项目,它在ListView.

于 2011-01-21T12:23:51.910 回答
4

尝试这样的事情来点击返回按钮任何你会去主屏幕/...

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // Display confirmation here, finish() activity.
        Intent startMain = new Intent(Intent.ACTION_MAIN);
        startMain.addCategory(Intent.CATEGORY_HOME);
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(startMain);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
于 2013-03-20T14:02:37.503 回答
2

这里没有一个解决方案对我有用..

我使用下面的代码让它工作

PackageManager pm = getPackageManager();
Intent i = new Intent("android.intent.action.MAIN");
i.addCategory("android.intent.category.HOME");
List<ResolveInfo> lst = pm.queryIntentActivities(i, 0);
if (lst != null) {
   for (ResolveInfo resolveInfo : lst) {
       try {
       Intent home = new Intent("android.intent.action.MAIN");
       home.addCategory("android.intent.category.HOME");
       home.setClassName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name);
       startActivity(home);
       break;
       } catch (Throwable t) {
           t.printStackTrace();
       }
   }
}

来自:https ://stackoverflow.com/a/16483596/1241783

希望这可以帮助某人

于 2013-12-02T13:00:01.237 回答
1

我想我参加聚会很晚了,但我也有类似的担忧。此处给出的答案会启动一个选择菜单,允许您选择启动器。如果您的代码中有多个启动器,则此处的答案:https ://stackoverflow.com/a/8666155可能会有所帮助。这会直接启动 Android 的默认主屏幕。

于 2013-10-24T12:57:02.087 回答
1

我不确定我是否完全理解您要做什么!但是,如果您的意思是希望用户能够通过在您的应用程序内部单击来访问另一个应用程序,那么您应该检查“intent”。在eclipse中运行API DEMO示例代码,运行App -> Intents

于 2011-01-21T08:53:15.423 回答
1

我已经用一条线实现了它

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

它的行为类似于主页按钮

于 2015-08-07T07:44:23.020 回答
0

这对我有好处!

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

有人可以解释为什么我们需要这个吗?

startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

顺便说一句,这就是我要找的

moveTaskToBack(true);
于 2015-11-01T19:17:31.870 回答