【问题标题】:Capture Power Key press in android?在android中捕获电源键?
【发布时间】:2013-06-24 08:49:41
【问题描述】:

我需要在 android 中捕获电源键按下。我尝试了以下

      @Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(KeyEvent.KEYCODE_POWER == event.getKeyCode()){
              //some operations
          }
    return super.onKeyDown(keyCode, event);
    }

但是在按下电源键控件时使用此代码不会进入 onKeyDown 方法。

长按电源键,调用此方法。但我需要的是单机 按我需要捕捉这个事件

谁能帮忙?

【问题讨论】:

  • 这是这个问题的完整工作answer

标签: android


【解决方案1】:

这上面有很多线程,你必须添加权限。

<uses-permission android:name="android.permission.PREVENT_POWER_KEY" />

How to hook into the Power button in Android?

【讨论】:

  • thnks。我已经看过这个帖子。但它对我不起作用。列表中不存在该权限
  • 那么也许看看当你按下电源键时发生了什么的日志,它对其他键有效吗?当你按下电源时,它给出了什么价值?
  • 按powerkey控制直接进入onStop。您的其他按键正在工作(返回、主页、音量)
  • 嗯,我看到一些 cmets 说这在库存固件上是不可能的。他们一定把它删除了。
  • 这意味着它无法捕获电源键按下。?长按上面的代码将起作用。
【解决方案2】:

您可能缺少清单中允许您的应用程序覆盖电源键的默认行为的权限,如果您已处理该事件以防止默认行为,则返回某些内容也很重要。

<uses-permission android:name="android.permission.PREVENT_POWER_KEY" />

有进一步的讨论here

所以你的代码是:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(KeyEvent.KEYCODE_POWER == event.getKeyCode()){
              return true;//If event is handled, falseif 
        }
        return super.onKeyDown(keyCode, event);
    }

如果您处理了该事件,则返回 true。如果您想允许该事件 由下一个接收者处理,返回false。

【讨论】:

  • 此权限不在使用权限列表中
  • 在按下电源按钮时,控制不是事件进入 onKeyDown 方法。我已经添加了日志来检查它。
猜你喜欢
  • 1970-01-01
  • 2022-08-11
  • 2011-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多