+
21
-

adb模拟用户输入为啥不支持中文输入?

adb模拟用户输入为啥不支持中文输入?


网友回复

+
25
-

原生 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%

我知道答案,我要回答