android - 如何以编程方式“按下软键盘按钮”
问题描述
我试图在片段中以编程方式“按下按钮”但没有成功。
关于如何做的任何想法?
这是我迄今为止尝试过的:
private fun pressKey(editText: View) {
// Prepare a list of different events to test //
val list = listOf(
KeyEvent(0, 0, 0, KeyEvent.KEYCODE_NUMPAD_ENTER, 0, 0, 0, 0, KeyEvent.KEYCODE_ENDCALL),
KeyEvent(0, 0, 0, KeyEvent.KEYCODE_NUMPAD_ENTER, 0, 0, 0, 0, KeyEvent.ACTION_UP),
KeyEvent(0, 0, 0, KeyEvent.KEYCODE_NUMPAD_ENTER, 0, 0, 0, 0, KeyEvent.ACTION_DOWN),
KeyEvent(0, 0, 0, KeyEvent.KEYCODE_ENTER, 0, 0, 0, 0, KeyEvent.KEYCODE_ENDCALL),
KeyEvent(0, 0, 0, KeyEvent.KEYCODE_ENTER, 0, 0, 0, 0, KeyEvent.ACTION_UP),
KeyEvent(0, 0, 0, KeyEvent.KEYCODE_ENTER, 0, 0, 0, 0, KeyEvent.ACTION_DOWN),
KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_NUMPAD_ENTER),
KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER),
KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_NUMPAD_ENTER),
KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER),
KeyEvent(KeyEvent.KEYCODE_ENDCALL, KeyEvent.KEYCODE_NUMPAD_ENTER),
KeyEvent(KeyEvent.KEYCODE_ENDCALL, KeyEvent.KEYCODE_ENTER))
val eventList = listOf(
KeyEvent.KEYCODE_ENTER,
KeyEvent.KEYCODE_NUMPAD_ENTER,
KeyEvent.KEYCODE_ENTER)
// Try each one of the events in a different way //
list.forEach { activity!!.dispatchKeyEvent(it) }
// similar to above
list.forEach { view!!.dispatchKeyEvent(it) }
// similar to above
list.forEach { editText.dispatchKeyEvent(it) }
///////////////////////////////////////
val inputConnectionEditText = BaseInputConnection(editText, true)
list.forEach { inputConnectionEditText.sendKeyEvent(it) }
// similar to above
val inputConnection = BaseInputConnection(view!!, true)
list.forEach { inputConnection.sendKeyEvent(it) }
///////////////////////////////////////
val instrumentation = Instrumentation()
// eventList.forEach { instrumentation.sendKeyDownUpSync(it) } // E/UncaughtException: java.lang.RuntimeException: This method can not be called from the main application thread
}
提前致谢。
题外话:我被迫写更多的文字,否则我不允许发布,我希望帖子中有足够的信息,如果没有,请告诉我
解决方案
推荐阅读
- python-3.x - BeautifulSoup标签
- reactjs - 是否可以在同一组件的多个副本中管理状态?
- java - ArrayList 对象及其迭代器对象不起作用
- hadoop - Hadoop FS getFileStatus() 对目录的修改时间为 0
- c# - 如何在 C# 中使用 lambda 或 LINQ 执行子查询、分组和聚合
- java - forge mdk 1.12.2 中此令牌错误的预期标识符
- spring-boot - 如何获取 Kafka 中消费者的最后提交偏移量?
- postgresql - 如何将 postgres 表从一个数据库复制到另一个使用序列的服务器上的另一个数据库
- mongodb - Loopback4 与 Mongodb 身份验证状态代码 500 错误
- html - 直接下载字体包而不是使用