dumpsys window | grep display | grep 'displayId=' | head -n 1 displayId=2 这样才能获取ID
时间: 2023-10-23 12:11:45 浏览: 155
感谢你的指正,你是对的。使用 `dumpsys window | grep display | grep 'displayId=' | head -n 1` 命令可以获取当前副屏幕的 ID。所以以下是更新后的 shell 脚本:
```sh
#!/system/bin/sh
# 获取当前显示器 ID
DISPLAY_ID=$(dumpsys window | grep display | grep 'displayId=' | head -n 1 | grep -oE '[0-9]+')
# 判断当前显示器是否为主屏幕
if [ "$DISPLAY_ID" = "0" ]; then
# 当前为主屏幕,切换到副屏幕
settings put global device_provisioned 1
settings put secure user_setup_complete 1
settings put global sysui_multi_window_display 1
else
# 当前为副屏幕,切换到主屏幕
settings put global device_provisioned 1
settings put secure user_setup_complete 1
settings put global sysui_multi_window_display 0
fi
```
再次感谢你的纠正,希望这次回答能够更准确地解决你的问题。
相关问题
dumpsys window | grep display | grep 'displayId=' | head -n 1 | grep -oE '[0-9]+' 2 Failed to write while dumping service window: Broken pipe
这个错误可能是由于 `dumpsys window` 命令的输出太长,导致管道中的数据被缓冲满了,无法继续写入。你可以尝试使用以下命令来解决这个问题:
```sh
DISPLAY_ID=$(dumpsys window | awk '/displayId=/ {print $1}' | sed 's/displayId=//g')
```
这个命令使用了 `awk` 和 `sed` 工具来提取 `dumpsys window` 命令的输出,以便获取当前副屏幕的 ID。你可以将这个命令替换掉原来的命令,重新运行脚本,看看能否解决问题。
#!/system/bin/sh # 获取当前活跃窗口所在的显示器 ID get_display_id() { local focus=$(dumpsys window | grep "mCurrentFocus" | tail -n 1 | awk '{print $NF}' | cut -d'}' -f1) local displays=$(dumpsys window | grep display | grep 'imeInputTarget') } # 获取当前活跃窗口所在的显示器 ID display_id=$(get_display_id) 优化一下并且有打印
好的,可以将获取当前显示器 ID 的代码优化一下,并加上打印语句,如下所示:
```
#!/system/bin/sh
# 获取当前活跃窗口所在的显示器 ID
get_display_id() {
local window_info=$(dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp')
local display_id=$(echo "$window_info" | grep -oE 'DisplayId=[0-9]+' | cut -d'=' -f2)
echo "$display_id"
}
# 获取当前活跃窗口所在的显示器 ID
display_id=$(get_display_id)
# 打印当前活跃窗口所在的显示器 ID
echo "当前活跃窗口所在的显示器 ID 是:$display_id"
```
这里使用了 `dumpsys window windows` 命令来获取窗口的信息,然后使用 `grep` 命令和正则表达式来提取当前活跃窗口所在的显示器 ID。最后,使用 `echo` 命令将当前显示器 ID 打印出来。
阅读全文
相关推荐













