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