如何通过编程的方式返回Android默认主屏幕?

6
在我的应用程序中,我有一个称为“退出”的按钮,当用户点击它时,我希望完成应用程序中的所有活动(位于堆栈中),并转到默认主页活动或所有应用程序活动。
我已经在我的onClick()中编写了以下代码:
Intent intent = new Intent(Intent.CATEGORY_HOME);
startActivity(intent); 

但是在logcat中会给我以下错误:

03-12 11:22:18.279: ERROR/AndroidRuntime(308): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.category.HOME }

那么我需要做些什么才能实现这一点呢?我需要在清单文件中进行一些配置,还是我的方法有误?


1
可能是重复的问题:如何通过编程方式回到主屏幕 - Jim G.
2个回答

13

试试这个:

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

1
它是否完成了堆栈任务中的所有活动? - Chandra Sekhar
1
不,这段代码将带您回到主屏幕。我刚刚给了您代码以转到默认主屏幕(从您的日志中可以看到,它引发了异常)。为了完成应用程序的所有活动,您需要编写在此代码之前调用的逻辑。 - AndroDev
1
我猜finish()方法可能会有帮助。 - Android
Chandra 是正确的。如果你有一个启动器,并且以编程方式转到 HOME,就像你回答的那样,所有的活动都会从堆栈任务中结束。试试吧,你会发现你不会返回到你从默认主屏幕启动的 Activity。 - portfoliobuilder
我的应用程序在具有Android 5.1.1设备的某些用户中会导致ActivityNotFoundException。详细信息:找不到处理意图 { act = android.intent.action.MAIN cat = [android.intent.category.HOME] } 的活动。 - Ercument Kisa
显示剩余2条评论

3

使用以下代码启动主屏幕:

Intent intent=new Intent(this, HomeClass.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接