【问题标题】:Overriding the functionality of Home Button覆盖主页按钮的功能
【发布时间】:2013-08-22 12:36:47
【问题描述】:

在 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 跳转到。我需要同样的功能。这是如何实现的。

问候

【问题讨论】:

  • 活动 a 和 b 属于同一个应用程序吗?您不能覆盖主页按钮功能
  • 是的。 Activity a 和 b 在同一个应用中。
  • 投反对票的人会关心说明投反对票的原因吗?我从来没有说过禁用主页按钮,因为它不适用于 android 4.0+。

标签: java android home-button


【解决方案1】:

试试这个:

@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。

【讨论】:

  • 5 秒后仍然无法启动
  • 你的安卓模拟器是什么版本的?
  • 用这个方法?不可以。唯一的其他选择是创建您自己的 Home Launcher。
  • 你的意思是完整的启动器?
【解决方案2】:

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

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

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

您可以覆盖onUserLeaveHint

protected void onUserLeaveHint ()如果你愿意

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

【讨论】:

  • 我已经重写了这个方法并尝试在其中启动新的活动,但它似乎不起作用。我应该怎么做才能实现我的目标?
  • @UmerFarooq 答案很简单,不能覆盖主页按钮功能。
  • @Raghunandan:那么,MX Player 的童锁功能是如何工作的?
  • @rIHaNJiTHiN 我不知道要问开发人员
  • @Raghunandan:仅供参考,主页按钮可以被覆盖。
【解决方案3】:

尝试重写此方法并编写您的代码。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多