通常情况下,按“Home”键可以回到“Home Screen”,这时你的应用可能还在后台运行。对于某些特殊情况,比如你重新定义了“Home“键防止用户退出你的应用,在某些情况下需要回到系统自带的Home 应用并强制退出应用。
假定能自定义的Home 应用名称为DummyActivity,你重新定义了Home 键,此时如过按“Home”键,系统会列出如下类似的列表:
此时如果将DummyActivity设为缺省“Use by default for this action”,以后用户将无法按“Home”键退回原有的Home应用。
在这种情况下,如果需要启动缺省的Home应用,可以通过PackageManager查询所有带有Intent.CATEGORY_HOME的Activity,启动其中名称不为DummyActivity 的Activity(系统缺省Home应用)。
private void exitApplication(){ MainMenuActivity.closeAllBelowActivities(MainMenuActivity.this); finish(); try { PackageManager localPackageManager = getPackageManager(); Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); List<ResolveInfo> resolveInfos = localPackageManager .queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); for (int i = 0; i < resolveInfos.size(); i++) { ResolveInfo resolveInfo = resolveInfos.get(i); ActivityInfo activityInfo = resolveInfo.activityInfo; if (!activityInfo.name.endsWith("DummyActivity")) { ComponentName componentName = new ComponentName( activityInfo.packageName, activityInfo.name); Intent intent1 = new Intent(); intent1.setComponent(componentName); startActivity(intent1); System.exit(0); break; } } } catch (Exception e) { mLoger.info("default home screen not found " + e.getMessage()); } }