【问题标题】:Android: How to trigger any key pressing event on soft keyboard?Android:如何触发软键盘上的任何按键事件?
【发布时间】:2016-03-02 15:18:46
【问题描述】:

有没有办法以编程方式按下Android软键盘的按键。

喜欢:当键盘出现时,我想通过我的代码而不是手指按“J”键。

【问题讨论】:

  • 此操作称为“模拟按键”以供将来参考 xD
  • @RicardoAlexandre 好的,兄弟,我会记住的。

标签: android android-softkeyboard


【解决方案1】:

第一种方法:

IBinder binder = ServiceManager.getService("window"); 
IWindowManager manager = IWindowManager.Stub.asInterface(binder);
manager.injectKeyEvent(new KeyEvent(KeyEvent.yourAction, KeyEvent.yourKeyCode),true);

您可以查看更多详细信息here。 此链接中还有另一种方法。

第二种方法,使用仪器:

Instrumentation inst = new Instrumentation();
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_MENU);

你可以看到这个question,它解释了如何使用检测和 webview 来做到这一点。

您不需要键盘来执行此操作,您可以显示或不显示。

keyCodes 的列表(如果需要)。

这个link 将为您按下的每个键显示 keyCode,我认为它适用于 android 和 linux 键盘,但不知道使用其他操作系统的代码是否相同。

【讨论】:

  • 谢谢你!它完美地工作。你能告诉我Android软键盘上“?123”的KeyCode是什么吗?
  • 我认为是 63,并且是常量 KEYCODE_SYM。
  • 感谢您的回复。但事实并非如此。常量 KEYCODE_SYM 将显示更改键盘的选项。我尝试了许多常量,但没有一个能够从字母键盘视图切换到带符号键盘视图的数字。所以,我仍然需要那个会触发“?123”的按键事件的常量。
  • stackoverflow.com/a/9292485/1237175。这里他们说 ServiceManager 类是隐藏的......我没有办法使用它吗?
  • 当我们在另一个(其他应用程序的)开放端活动中时模拟要按下的 ENTER 键怎么样?
猜你喜欢
  • 1970-01-01
  • 2013-03-12
  • 2014-10-08
  • 2011-01-13
  • 2018-04-15
  • 1970-01-01
  • 1970-01-01
  • 2015-02-10
  • 2013-01-17
相关资源
最近更新 更多