【问题标题】:Catch back button press event when screen locked屏幕锁定时捕捉返回按钮按下事件
【发布时间】:2015-04-23 08:23:39
【问题描述】:

我正在尝试编写一个小应用程序,该应用程序将捕获按下后退按钮的KeyEvent当屏幕锁定时
我看到您可以轻松地覆盖 onKeyDownonBackPressed 以捕获此事件,但这仅在活动正在运行时才有效。
据我了解,在某些安卓手机上,如果不是在所有手机上,操作系统在屏幕锁定时不会听后退和菜单按钮。

编辑
我已经阅读了几篇关于捕获用户按下音量按钮的事件的帖子,并且都说当屏幕关闭时它们不是一种方法。
他们有理由相信后退按钮的变化吗?

【问题讨论】:

  • 所以首先你需要找到服务中的屏幕是否被锁定
  • 如今大多数手机在屏幕关闭时都没有活动的后退按钮。他们有屏幕导航(导航栏)

标签: android


【解决方案1】:

1) 向广播接收器注册 Intent.ACTION_SCREEN_OFF 和 Intent.ACTION_SCREEN_ON

2) 使用 Keyguard Manager 检查屏幕是否被锁定,例如:

KeyguardManager kManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
boolean isLocked = kManager.inKeyguardRestrictedInputMode();

或不使用广播接收器,您可以检查如下:

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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    相关资源
    最近更新 更多