adb shell input keyevent和adb shell sendevent的基本区别是什么?我应该用哪一个来输入字符?传递给两个命令的键码是否相同?


当前回答

如果您想在多个设备连接时将文本发送到特定设备。首先使用adb设备查找附加设备

adb devices
List of devices attached
3004e25a57192200        device
31002d9e592b7300        device

然后获取您的特定设备id并尝试以下操作

adb -s 31002d9e592b7300 shell input text 'your%stext'

其他回答

向运行在android设备上的React-Native应用程序发送重载调用:adb shell input keyboard text "rr"

另外,如果您想用输入命令发送嵌入式空格,请使用%s

adb shell input text 'this%sis%san%sexample'   

将产生

这是一个例子

被输入。

%本身不需要转义-只有特殊的%s对被特殊处理。这当然会导致一个明显的问题,即如何输入字符串%s,这必须使用两个单独的命令来完成。

如果您想在多个设备连接时将文本发送到特定设备。首先使用adb设备查找附加设备

adb devices
List of devices attached
3004e25a57192200        device
31002d9e592b7300        device

然后获取您的特定设备id并尝试以下操作

adb -s 31002d9e592b7300 shell input text 'your%stext'

另一个区别是:

"adb shell input"调用input.jar来处理和发送来自android框架Java层的键码。 "adb sendevent"实际上是c代码(toolbox实用程序的一部分),它将输入代码直接发送到/dev/input....的Linux输入子系统。

更多详细的代码跟踪到AOSP框架可以在这里找到:

http://www.srcmap.org/sd_share/4/aba57bc6/AOSP_adb_shell_input_Code_Trace.html#RefId=7c8f5285

顺便说一下,如果你试图找到一种方法发送双引号到设备,尝试以下:

Adb shell输入文本“\”

我不确定为什么没有引用的事件代码,但这个解决方法可以工作。此外,如果你正在使用MonkeyDevice(或黑猩猩聊天),你应该在调用MonkeyDevice之前测试每个字符。输入,否则当你尝试发送时,你什么也得不到