You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何显示adb shell input keyevent 19/20操作时的高亮文本?

使用ADB KeyEvent操作设置菜单并获取高亮项文本的解决方案

一、获取当前高亮选中项的文本

安卓系统中,被高亮选中的UI元素会带有focused="true"或selected="true"属性,你可以通过uiautomator dump命令导出当前界面的UI结构,再解析提取目标文本:

  1. 导出UI结构到设备本地:
    adb shell uiautomator dump /sdcard/ui_dump.xml
    
  2. 将文件拉到电脑查看(可选):
    adb pull /sdcard/ui_dump.xml
    
  3. 直接在adb shell中快速解析高亮项文本(无需拉取文件):
    adb shell uiautomator dump /dev/tty | grep -A 5 -B 2 'focused="true"' | grep -o 'text="[^"]*"' | cut -d'"' -f2
    
    这条命令会直接输出当前高亮项的文本内容,若你的设备中高亮项用selected="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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 07:22:08