Era*_*dir 8 unicode android text adb
了解ADB Shell输入事件中描述的基本键映射,我可以很好地模拟文本输入和特殊键.但是Unicode字符怎么样?例如,我想使用德国QWERTZ键盘布局的变音符号.
这让我:
$ adb shell input text ö
Killed
Run Code Online (Sandbox Code Playgroud)
所以它似乎崩溃了
adb shell input text \xFC
Run Code Online (Sandbox Code Playgroud)
在输入上打印xFC.我已尝试过这些事件,getevent但我没有找到直接映射,我也查看了键映射文件/system/usr/keylayout/Qwerty.kl
我相信唯一的可能性是通过剪贴板,但正如在使用adb shell 将文本粘贴到Android模拟器剪贴板的问题中所指出的,似乎不知道如何将它用于Android Ice Cream Sandwich或更高版本.
小智 15
我编写了一个接受广播意图的虚拟键盘,因此您可以通过adb将unicode字符发送到editText视图.
例如adb shell am broadcast -a ADB_INPUT_TEXT --es msg"你好吗!你好!"
这是github项目:https: //github.com/senzhk/ADBKeyBoard
希望这个小项目能有所帮助.
小智 7
其实ADBKeyBoard非常好!谢谢Eric Tang!
一些有用的扩展,以方便使用:
从adb切换到ADBKeyBoard:
adb shell ime set com.android.adbkeyboard/.AdbIME
Run Code Online (Sandbox Code Playgroud)
检查可用的le虚拟键盘:
ime list -a
Run Code Online (Sandbox Code Playgroud)
如果您的shell不接受"!",请使用简单的引号字符 - 不像上面的示例那样加倍 (说明标志)
adb shell am broadcast -a ADB_INPUT_TEXT --es msg 'Accented characters here'
Run Code Online (Sandbox Code Playgroud)
切换回原始虚拟键盘:(在我的情况下swype ...)
adb shell ime set com.nuance.swype.dtc/com.nuance.swype.input.IME
Run Code Online (Sandbox Code Playgroud)
使用adb over wifi来简化你的生活... :)
input不起作用,因为它只能通过虚拟键盘发送单键事件(如果您不明白我的意思,请检查源代码)。
我认为剩下的唯一方法是使用Instrumentation。我想您可以为您的Activity创建一个测试,然后执行以下操作:
\n final Instrumentation instrumentation = getInstrumentation();\n final long downTime = SystemClock.uptimeMillis();\n final long eventTime = SystemClock.uptimeMillis();\n \n final KeyEvent altDown = new KeyEvent(downTime, eventTime, KeyEvent.ACTION_DOWN,\n KeyEvent.KEYCODE_GRAVE, 1, KeyEvent.META_ALT_LEFT_ON);\n final KeyEvent altUp = new KeyEvent(downTime, eventTime, KeyEvent.ACTION_UP,\n KeyEvent.KEYCODE_GRAVE, 1, KeyEvent.META_ALT_LEFT_ON);\n \n instrumentation.sendKeySync(altDown);\n instrumentation.sendCharacterSync(KeyEvent.KEYCODE_A);\n instrumentation.sendKeySync(altUp);\n instrumentation.sendKeySync(altDown);\n instrumentation.sendCharacterSync(KeyEvent.KEYCODE_E);\n instrumentation.sendKeySync(altUp);\n instrumentation.sendKeySync(altDown);\n instrumentation.sendCharacterSync(KeyEvent.KEYCODE_I);\n instrumentation.sendKeySync(altUp);\n instrumentation.sendKeySync(altDown);\n instrumentation.sendCharacterSync(KeyEvent.KEYCODE_O);\n instrumentation.sendKeySync(altUp);\n instrumentation.sendKeySync(altDown);\n instrumentation.sendCharacterSync(KeyEvent.KEYCODE_U);\n instrumentation.sendKeySync(altUp);\nRun Code Online (Sandbox Code Playgroud)\n这将发送修改后的密钥: \xc3\xa0\xc3\xa8\xc3\xac\xc3\xb2\xc3\xb9
\n/sf/answers/4995704451/显示了使用AndroidViewClient/culebra和CulebraTester2-public后端的另一个解决方案。
\n| 归档时间: |
|
| 查看次数: |
13403 次 |
| 最近记录: |