如何忽略android 3.0中“最近活动按钮”的按钮单击

时间:2012-08-20 13:53:19

标签: android android-3.0-honeycomb statusbar

我的问题是自我解释。 我搜索了很多,但找不到处理近期活动按钮点击的方法。 我想忽略来自android 3.0平板电脑状态栏的“近期活动”按钮的硬件按钮点击。

目前我到目前为止所尝试的是:

public boolean onKeyDown(int keyCode, KeyEvent event) {

       if(keyCode == KeyEvent.KEYCODE_BACK) 
       { 
              return true;
       }
       // in the same way I have written it for KEYCODE_HOME
}

你能告诉我应该写什么来处理最近的活动按钮吗?

提前感谢你。 :)

编辑:这就是我现在尝试过的。 KEYCODE_APP_SWITCH无效。

public boolean onKeyDown(int keyCode, KeyEvent event) {
        Log.e("INSIDE", "LOCKDEMO");
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Log.e("KEY EVENT", "BACK");
            return true;
        }
        if (keyCode == KeyEvent.KEYCODE_HOME) {
            Log.e("KEY EVENT", "HOME");
            return true;
        }
        if(keyCode == KeyEvent.FLAG_FROM_SYSTEM) {
            Log.e("KEY EVENT", "SYSTEM");
            return true;
        }
        if(keyCode == KeyEvent.FLAG_KEEP_TOUCH_MODE) {
            Log.e("KEY EVENT", "TOUCH MODE");
            return true;
        }
        if(keyCode == KeyEvent.FLAG_SOFT_KEYBOARD) {
            Log.e("KEY EVENT", "SoFT KEYBOARD");
            return true;
        }
        if(keyCode == KeyEvent.FLAG_VIRTUAL_HARD_KEY) {
            Log.e("KEY EVENT", "HARDWARE KEY");
            return true;
        }
        if(keyCode == KeyEvent.KEYCODE_APP_SWITCH) {
            Log.e("KEY EVENT", "APP SWITCH");
            return true;
        }

        Log.e("KEY EVENT", "NOT HANDLED");
        return super.onKeyDown(keyCode, event);
    }

当我按下RecentAppBtn时,它甚至不打印最后一条Log语句,即事件未处理。

2 个答案:

答案 0 :(得分:6)

从偷看到文档,我认为KeyEvent.KEYCODE_APP_SWITCH是您正在寻找的。

然而,当您按下应用程序切换器时,您也可以使用KeyEvent.getKeyCode()-method(在event - 参数上)查看触发了哪些键代码(以及是否有任何键被触发)。


我玩了一段时间,我已经得出结论,这是不可能的。

KEYCODE_APP_SWITCH - 事件未发送至onKeyDown()dispatchKeyEvent()。因此,无法处理。

此外,您将在Android 4设备上遇到问题,因为KEYCODE_HOME-event也不再分发给上述任何方法。请参阅文档:

  

密钥代码常量:Home键。该密钥由框架处理   并且从未交付给应用程序


似乎没有真正简单的方法来自己创建真正的锁屏。请参阅此讨论:Developing a custom lock screen

可以在默认锁定屏幕上显示一些自定义信息:Is there a way for me to show a customized message on the lock screen?


为了完整起见:在Android L中,您将能够“锁定应用中的用户”,因此您无需手动覆盖硬件密钥。这是relevant information

  

L Developer Preview 引入了一个新的任务锁定API   您暂时限制用户离开您的应用或存在   被通知中断。例如,如果您可以使用此功能   正在开发一个教育应用程序,以支持高风险评估   Android上的要求。 一旦您的应用激活此模式,用户就会   无法看到通知,访问其他应用或返回   主屏幕,直到您的应用退出模式。

答案 1 :(得分:1)

如果您想以Kiosk模式运行应用程序,则可以禁用 com.android.systemui 并通过软按钮替换按钮(例如Button Savior应用程序,小心不要弄乱你的设备!)。似乎很多化妆品都消失了,我不知道它是否会以某种未知的方式影响系统的稳定性,但到目前为止我已经让它成功了。

如果有人了解 com.android.systemui 的更多信息,它真正做了什么以及禁用它是否安全,请发表评论!

另见我的帖子: Safe to disable com.android.systemui?

我希望得到一些答案......