如何在整个应用程序上听任何键盘?

时间:2013-12-31 09:26:03

标签: java android android-edittext android-softkeyboard

我们正在尝试构建能够监听任何按键(字符或命令)的Android活动,例如自定义EditText

  1. Android上有Windows OS可用的键盘挂钩吗?
  2. 是否可以收听所有控件(EditText和其他控件)按下的所有键?
  3. 这可以通过在后台运行的活动来实现吗?
  4. 修改

    至于安全性,我们希望仅为我们的应用活动获取键盘事件,例如:当我们的活动被展示和聚焦时。

5 个答案:

答案 0 :(得分:2)

如果没有View使用该事件,将调用Activity的onKeyDown / up / etc方法。

当Views执行事件时,您需要:

  1. 每个相关课程的自定义版本,用于将按键转发至活动。
  2. 向视图层次结构中的所有TextView添加text change listenerkey listener(可以使用递归方法逐步遍历整个层次结构)

答案 1 :(得分:1)

您无法从后台进程中侦听EditText个键,因为它与操作该文本的键盘活动有关。它将是安全评估,因为它不仅允许您在自己的应用程序中监听密钥,还可以监听所有其他密钥,包括用户密码等敏感数据。

答案 2 :(得分:1)

处理键盘操作
http://developer.android.com/training/keyboard-input/commands.html

事件侦听器是View类中包含单个回调方法的接口。当用户与UI中的项目交互触发了已注册监听器的View时,Android框架将调用这些方法。

http://developer.android.com/guide/topics/ui/ui-events.html#EventListeners

答案 3 :(得分:0)

Android软键盘不会创建任何事件,因此没有好的方法来侦听键事件...您可以使用TextWatcher(http://developer.android.com/reference/android/text/TextWatcher.html)添加到隐藏的编辑文本中。

答案 4 :(得分:0)

http://developer.android.com/reference/android/hardware/input/InputManager.html

根据文档,这里有一个嵌套类

嵌套类 interface - InputManager.InputDeviceListener - 侦听输入设备中的更改。

只是领先,但不确定使用情况