在 Android 中模拟键盘事件
Posted
技术标签:
【中文标题】在 Android 中模拟键盘事件【英文标题】:Simulating Keyboard Events in Android 【发布时间】:2013-05-25 08:50:26 【问题描述】:我有一个项目,我正在尝试触发键盘事件。我正在使用 Instrumentation Class,它在模拟器上运行良好,但是当我在我的设备上启动它时,调用不起作用,有什么办法让它工作吗?
另外,我在网上搜索了一些关于 IWindowManager 和内部 API 的帖子,我完全理解使用它们的风险,但我的项目是一项研究,并不打算发布,所以我没有'不介意在我的项目中使用这些 API,如果它们可以解决我的问题,但问题是我找不到包含这些类的 JAR。
TLDR :我需要一个解决方案来帮助我在我的 android 设备上触发键盘事件,欢迎提出任何想法
【问题讨论】:
您目前使用的哪些代码适用于模拟器但不适用于设备? 我正在使用 Instrumentation 类 【参考方案1】:其实有一个更简单的方法,我发现 使用 Activity 类或 WebView 类。两者具有相同的功能。 代码如下所示:
webView.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_1));
【讨论】:
其实任何扩展View的类都有这个方法,还有dispatchTouchEvent(MotionEvent event)....以后可能有用【参考方案2】:在instrumentation中,有发送keycode的api:
getInstrumentation().sendCharacterSync(int keycode);
如果你有设备的root访问权限,你可以在这里查看代码:
https://code.google.com/p/androidscreencast/source/browse/AndroidScreencastClient/src/net/srcz/android/screencast/client/ClientHandler.java ;
使用 IWindowManager。 IWindowManager是android系统的一部分,可以在android.jar中找到该类,源码可以到android官网下载。
【讨论】:
感谢您的回答,但我已经找到了一个更简单的解决方案:)以上是关于在 Android 中模拟键盘事件的主要内容,如果未能解决你的问题,请参考以下文章