2

在 android 中,我已经能够非常轻松地覆盖后退按钮的功能,但对于我的应用程序,我需要覆盖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并且 hepresses the home button时,启动器会为用户提供list of home screens跳转到。我需要同样的功能。这怎么可能实现。

问候

4

3 回答 3

5

尝试这个:

@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 的一项安全功能,活动仅在 5 秒后启动。如果您想立即启动它。使用你自己的Home Launcher.

于 2013-08-22T12:51:21.010 回答
3

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

如果您想处理主页按钮,请输入主屏幕。

我不确定以下是否有帮助。

你可以覆盖onUserLeaveHint

protected void onUserLeaveHint ()如果你想

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

于 2013-08-22T12:43:09.417 回答
2

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

 @Override
 protected void onStop() 
 {
     super.onStop();
     startActivity(new Intent(this, ActivityB.class));
 }
于 2013-08-22T12:44:56.967 回答