adb模拟用户输入为啥不支持中文输入?
网友回复
原生 ADB 的 input text 命令确实 不支持中文,因为它只能模拟 ASCII 字符的键盘事件。
要解决这个问题,目前业界最成熟、最常用的方案是安装一个特制的输入法(ADBKeyBoard),通过发送广播(Broadcast)的方式来传递中文字符。
以下是具体的解决方案步骤和 Python 代码修改:
方法一:使用 ADBKeyBoard(最推荐,稳健)
这是一个开源的极简 Android 输入法,它不显示键盘界面,而是接收 ADB 广播指令来直接输入文字。
1. 准备工作下载 APK:去 GitHub 下载 ADBKeyBoard.apk (或者直接搜索下载,文件很小约 50KB)。
GitHub 地址: senzhk/ADBKeyBoard
直接下载: 在项目页面的 bin 目录下下载 apk。
安装并设置:在电脑终端运行以下命令(假设你已经连接了手机):
# 1. 安装 APK adb install ADBKeyBoard.apk # 2. 将 ADBKeyBoard 设置为当前输入法 adb shell ime set com.android.adbkeyboard/.AdbIME
注意:调试完后,如果你想用手机打字,需要去手机设置里把输入法切换回原来的(如搜狗、Gboard)。
2. 核心原理安装好后,你就不能用 input text 了,而是用 am broadcast 发送意图。
普通命令:
adb shell am broadcast -a ADB_INPUT_TEXT --es msg '你好世界'
Base64 模式 (推荐):如果文本包含空格或特殊字符,直接传字符串容易报错,建议转成 Base64 传输。
adb shell am broadcast -a ADB_INPUT_B64 --es msg 'base64_encoded_string'3. 修改 Python 代码
在之前的 Python 代码中,替换 input_text 函数。
import base64
def input_text(text):
"""
输入文本(支持中文)
需要先安装 ADBKeyBoard 并设置为默认输入法
"""
print(f"Executing: Type text '{text}'")
# 方法 A: 简单广播 (如果文本不含特殊符号)
# e...点击查看剩余70%


