Android:如何在软键盘上触发任何按键事件?

5

有没有办法通过程序按下安卓软键盘的按键。

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


1
这个操作被称为“模拟按键”,以备将来参考 xD - Ricardo A.
@RicardoAlexandre 好的,兄弟,我会记住的。 - Mohit Chauhan
1个回答

4

第一种方法:

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

您可以在此处查看更多详细信息:这里。 此链接中还有另一种方法。
第二种方法,使用instrumentation:
Instrumentation inst = new Instrumentation();
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_MENU);

您可以查看这个问题,了解如何使用工具和WebView进行模拟。

您不需要键盘即可完成此操作,您可以选择显示或隐藏它。

如果您想,可以查看按键码列表。

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


谢谢!它完美地工作了。你能告诉我安卓软件键盘上“?123”的 KeyCode 是什么吗? - Mohit Chauhan
我认为是63,常量为KEYCODE_SYM。 - Ricardo A.
谢谢您的回复。但是不是这样的。常量KEYCODE_SYM将显示更改键盘的选项。我尝试了许多常量,但没有一个能够从字母键盘视图切换到带有数字和符号键盘视图。因此,我仍然需要那个触发“?123”按键事件的常量。 - Mohit Chauhan
在这里他们说ServiceManager类是隐藏的...我没有办法使用它吗? - Ramesh_D
请注意,第二种方法不能来自主线程。您必须从后台线程执行它。 - Saman Sattari
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接