我正在尝试编写一个小应用程序,它会抓住按下后退按钮的KeyEvent
,当屏幕被锁定时 。
我看到您可以轻松覆盖onKeyDown
或onBackPressed
以捕获此事件,但这仅在活动正在运行时才有效。
据我所知,在一些Android手机上,如果不是全部,那么当屏幕被锁定时,操作系统不会听到背面和菜单按钮。
修改
我已经阅读了几篇关于捕获用户按下音量按钮的事件的帖子,所有人都表示,当屏幕关闭时,他们不是这样做的。
他们有理由相信这个案例是关于后退按钮的变化吗?
答案 0 :(得分:3)
1)注册BroadCast Receiver for Intent.ACTION_SCREEN_OFF和Intent.ACTION_SCREEN_ON
2)使用Keyguard Manager检查屏幕是否已锁定,如:
KeyguardManager kManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
boolean isLocked = kManager.inKeyguardRestrictedInputMode();
或不使用BroadCast Receiver,您可以查看:
KeyguardManager kManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
if( kManager .inKeyguardRestrictedInputMode()) {
//locked
} else {
//not locked
}
下一步如果屏幕被锁定,请检查后退按钮事件。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
//Back Button is pressed
}
return super.onKeyDown(keyCode, event);
}