我想在我的应用程序中启动Android的主屏幕,主要目标是在用户按下一个特定的键时向用户显示所有应用程序。实际上,方法并不重要。有任何想法可以实现吗?
这里是启动HomeActivity的代码
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
你在一些答案上发表的评论表明你实际上想启动Launcher(如果是这种情况,您可能需要更新标题)。要做到这一点,使用Anand提出的启动主页活动的相同方法。
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_LAUNCHER);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
@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);
}
这里的解决方案都对我无效...
通过使用以下代码,我成功解决了问题
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://dev59.com/g2HVa4cB1Zd3GeqPpr_q#16483596
希望这对某些人有所帮助。
我已经使用一行代码实现了它
moveTaskToBack(true); //activity.moveTaskToBack(true);
我不确定我是否完全理解你想做什么!但是如果你的意思是希望用户能够通过在你的应用程序内点击来打开另一个应用程序,那么你应该查看 "intent"。 在 Eclipse 中运行API DEMO 示例代码,然后运行 App -> Intents。
我觉得我来晚了,但我有一个类似的问题。这里给出的答案会启动一个选择菜单,让您选择Launcher。如果您的代码中有多个Launcher,则此处的答案:https://dev59.com/M17Va4cB1Zd3GeqPIlPP#8666155 可能会有所帮助。这将直接启动Android的默认主屏幕。
这对我来说很有效!
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startActivity(startMain);
有人能解释一下为什么我们需要这个吗?
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
顺便说一下,这就是我在寻找的东西
moveTaskToBack(true);