覆盖Home Button的function

在android中,我能够非常轻松地覆盖后退按钮的function,但对于我的应用程序,我需要覆盖home button 。 例如,用户在Activity A ,当他按下主页按钮时, activity B is launched 。 我试过以下但是失败了。

 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_HOME) { startActivity(new Intent(this, ActivityB.class)); return true; } return super.onKeyDown(keyCode, event); } 

我确信它可以完成,因为在Nova Launcher当用户在home screen并且他presses the home button ,启动器向用户提供要跳转到list of home screens 。 我需要同样的function。 如何实现这一目标。

问候

尝试这个:

 @Override protected void onUserLeaveHint() { if (!navigating) { Intent intent2 = new Intent(); intent2.setClass(ActivityA.this, ActivityB.class); intent2.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); forceHome(this, intent2); } super.onUserLeaveHint(); } public static void forceHome(Context paramContext, Intent paramIntent) { if (paramIntent != null) { ((AlarmManager) paramContext.getSystemService(ALARM)).set(1, System.currentTimeMillis(), PendingIntent.getActivity(paramContext, 0, paramIntent, 0)); } } 

作为android的安全function,该活动仅在5秒后启动。 如果你想立即启动它。 使用您自己的Home Launcher

不,你不能覆盖HomeButton的function。 出于安全原因,恶意应用程序无法控制您的主页按钮。

如果你想处理主页按钮function主屏幕。

我不确定以下内容是否有用。

您可以覆盖onUserLeaveHint

如果你愿意,可以使用protected void onUserLeaveHint ()

作为活动即将作为用户选择的结果进入后台的活动生命周期的一部分,在API级别3C中添加。 例如,当用户按下Home键时,将调用onUserLeaveHint(),但是当传入的电话呼叫导致调用中的Activity自动被带到前台时,onUserLeaveHint()将不会被调用的活动被调用。 在调用它的情况下,在活动的onPause()回调之前调用此方法。 此回调和onUserInteraction()旨在帮助活动智能地管理状态栏通知; 特别是,帮助活动确定取消通知的适当时间。

尝试覆盖此方法并编写代码。

  @Override protected void onStop() { super.onStop(); startActivity(new Intent(this, ActivityB.class)); }