在Android中覆盖主页按钮

时间:2015-05-05 06:42:42

标签: android override launcher android-homebutton

我需要覆盖锁屏应用的主页按钮。我发现以下答案在主页按钮按下6秒后重新启动应用程序。

protected void onUserLeaveHint() {
    Intent i=new Intent(this,MainActivity123.class);        
    startActivity(i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT));
    Toast.makeText(this,"leaveHint",Toast.LENGTH_SHORT).show();
}

但我想立即启动应用程序。所以我猜他们是一个答案,如果我们使我们的应用程序默认启动应用程序比他们没有时间差距。所以我在我的清单中添加

<intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.HOME"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

但这不起作用,应用程序在6秒后仍然重启。 我该怎么办。

所以花一些时间进行研究,找到另一种方法{用于进入启动器的默认屏幕当你已经在主屏幕上} 该方法在startActivity()

中使用适当的标志自动调用
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    Toast.makeText(this,"onNewEvent",Toast.LENGTH_SHORT).show();
    if ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) !=
            Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) {
        Toast.makeText(this,"onNewEvent",Toast.LENGTH_SHORT).show();
        //++goHome++
        startActivity(intent);
    }
}

该方法被调用但是app仍然在6秒后启动。没有进展任何建议........

1 个答案:

答案 0 :(得分:0)

尝试通过实施此方法覆盖主页按钮:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_HOME)) {
        Toast.makeText(this, "You pressed the home button!", Toast.LENGTH_LONG).show();                     
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

:)希望有所帮助。