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语句,即事件未处理.
从偷看到文档,我认为这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上的高风险评估要求,则可以使用此功能.一旦您的应用激活此模式,用户将无法看到通知,访问其他应用或返回主屏幕,直到您的应用退出该模式.