重定义Home键后Android 强制退出并回到系统Home Screen的方法

通常情况下,按“Home”键可以回到“Home Screen”,这时你的应用可能还在后台运行。对于某些特殊情况,比如你重新定义了“Home“键防止用户退出你的应用,在某些情况下需要回到系统自带的Home 应用并强制退出应用。

假定能自定义的Home 应用名称为DummyActivity,你重新定义了Home 键,此时如过按“Home”键,系统会列出如下类似的列表:

重定义Home键后Android 强制退出并回到系统Home Screen的方法_第1张图片

此时如果将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());
}
 
}


 

 

你可能感兴趣的:(exception,android,action)