覆盖Home Button的功能

时间:2013-08-22 12:36:47

标签: java android home-button

在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 Launcherhome screenpresses the home button,启动器会为用户提供一个list of home screens来跳转。我需要同样的功能。如何实现这一目标。

此致

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

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

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

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

您可以覆盖onUserLeaveHint

protected void onUserLeaveHint ()如果你想

  

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

答案 2 :(得分:2)

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

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