通常情况下,按“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());
}
}