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

Shr*_*ant 2 android statusbar android-3.0-honeycomb

我的问题是自我解释.我搜索了很多,但找不到处理近期活动按钮点击的方法.我想忽略来自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
}
Run Code Online (Sandbox Code Playgroud)

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

提前感谢你.:)

编辑:这是我现在尝试过的.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);
    }
Run Code Online (Sandbox Code Playgroud)

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

Luk*_*uth 6

从偷看到文档,我认为这KeyEvent.KEYCODE_APP_SWITCH就是你正在寻找的东西.

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


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

KEYCODE_APP_SWITCH-event不递送到onKeyDown()也不是dispatchKeyEvent().因此,它无法处理.

此外,您将在Android 4设备上遇到问题,因为KEYCODE_HOME-event也不再被分派到上述任何方法.查看文档:

密钥代码常量:Home键.此密钥由框架处理,永远不会传递给应用程序.


似乎没有真正简单的方法来自己创建一个真正的锁屏.请参阅此讨论:开发自定义锁定屏幕

可以在默认锁定屏幕上显示一些自定义信息:我有没有办法在锁定屏幕上显示自定义消息?


为了完整起见:在Android L中,您将能够"锁定应用程序中的用户",因此您无需手动覆盖硬件密钥.这是相关信息:

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