如何显示adb shell input keyevent 19/20操作时的高亮文本?
使用ADB KeyEvent操作设置菜单并获取高亮项文本的解决方案
一、获取当前高亮选中项的文本
安卓系统中,被高亮选中的UI元素会带有focused="true"或selected="true"属性,你可以通过uiautomator dump命令导出当前界面的UI结构,再解析提取目标文本:
- 导出UI结构到设备本地:
adb shell uiautomator dump /sdcard/ui_dump.xml - 将文件拉到电脑查看(可选):
adb pull /sdcard/ui_dump.xml - 直接在adb shell中快速解析高亮项文本(无需拉取文件):
这条命令会直接输出当前高亮项的文本内容,若你的设备中高亮项用adb shell uiautomator dump /dev/tty | grep -A 5 -B 2 'focused="true"' | grep -o 'text="[^"]*"' | cut -d'"' -f2selected="true"标识,将命令里的focused="true"替换即可。
二、编写自动化切换并打开菜单的脚本思路
以Bash脚本为例,核心逻辑是循环发送上下按键、解析当前高亮文本、判断是否为目标菜单后执行打开操作:
#!/bin/bash # 目标菜单文本,根据需求修改 TARGET_MENU="Wi-Fi" while true; do # 发送下按键切换选项(换成19则是上按键) adb shell input keyevent 20 # 等待UI更新,根据设备性能调整时长 sleep 0.5 # 获取当前高亮项文本 CURRENT_TEXT=$(adb shell uiautomator dump /dev/tty | grep -A 5 -B 2 'focused="true"' | grep -o 'text="[^"]*"' | cut -d'"' -f2) echo "当前选中: $CURRENT_TEXT" # 判断是否为目标菜单,是则打开并退出循环 if [ "$CURRENT_TEXT" = "$TARGET_MENU" ]; then adb shell input keyevent 66 echo "已打开$TARGET_MENU菜单" break fi done
注意事项
- 不同安卓版本或定制UI的属性可能有差异,若上述命令无法获取文本,可导出完整XML查看高亮项的具体属性标识
- 等待时间(
sleep)需根据设备响应速度调整,避免UI未更新就解析导致获取错误文本 - 确保设备已开启USB调试,且ADB连接正常
内容的提问来源于stack exchange,提问作者ruru
相关产品推荐
相关产品推荐

