dumpsys window | grep "mCurrentFocus"| tail -n 1 | awk '{print $NF}' | cut -d'}' -f1 com.tencent.start.tv/com.tencent.start.ui.SplashActivity dumpsys window | grep display am start -n com.tencent.start.tv/com.tencent.start.ui.SplashActivity --display 2 am start -n com.ktcp.video/com.ktcp.video.activity.detail.DetailCoverActivity --display 0 参考这些给我一个Android的shell脚本
时间: 2024-03-01 13:53:18 浏览: 19
好的,以下是一个简单的 Android shell 脚本,它可以执行上述的命令:
```shell
#!/bin/bash
# 获取当前活跃窗口的包名和 Activity 名称
focus=$(dumpsys window | grep "mCurrentFocus" | tail -n 1 | awk '{print $NF}' | cut -d'}' -f1)
# 打印结果
echo "当前活跃窗口:$focus"
# 启动指定包名和 Activity 名称的应用程序到指定的显示器上
am start -n com.tencent.start.tv/com.tencent.start.ui.SplashActivity --display 2
am start -n com.ktcp.video/com.ktcp.video.activity.detail.DetailCoverActivity --display 0
```
你可以将上述脚本保存为一个 `.sh` 文件,然后通过 `adb` 命令将其推送到你的 Android 设备上,并在设备上执行该脚本。在执行脚本之前,请确保你已经连接了 Android 设备,并且已经启用了 `adb` 调试功能。
相关问题
dumpsys window | grep "mCurrentFocus" | tail -n 1 | awk '{print $NF}' | cut -d'}' -f1 com.rxgb.launcher/com.rxgb.launcher.activity.MainActivity
您的命令输出了当前活跃窗口的信息,因此 `get_display_id` 函数实现正确。您可以尝试在 `get_display_id` 函数中添加一些调试信息,例如在 `echo "$focus"` 和 `echo "$displays"` 后面再添加一行 `echo "focus=$focus displays=$displays"`,以便了解函数中每个变量的值。例如:
```
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')
echo "$focus"
echo "$displays"
echo "focus=$focus displays=$displays"
echo $displays | grep "$focus"
}
```
这样可以帮助您找出问题所在。另外,您也可以尝试在脚本中添加一些错误处理代码,例如在 `dumpsys window` 命令执行失败时输出错误信息。例如:
```
get_display_id() {
local focus=$(dumpsys window | grep "mCurrentFocus" | tail -n 1 | awk '{print $NF}' | cut -d'}' -f1)
if [ -z "$focus" ]; then
echo "Error: Failed to get current focus."
return 1
fi
local displays=$(dumpsys window | grep display | grep 'imeInputTarget')
if [ -z "$displays" ]; then
echo "Error: Failed to get displays information."
return 1
fi
echo "$focus"
echo "$displays"
echo "focus=$focus displays=$displays"
echo $displays | grep "$focus"
}
```
这样可以更加健壮地处理异常情况。
local focus=$(dumpsys window | grep "mCurrentFocus" | tail -n 1 | awk '{print $NF}' | cut -d'}' -f1) local displays=$(dumpsys window | grep display | grep 'imeInputTarget') local display_id=$(echo "$displays" | grep "$focus") echo $display_id
这段代码有一个问题,它没有提取出显示器的 ID,而是直接将 `$displays` 变量赋值给了 `$display_id` 变量,因此输出的是包含当前窗口信息的行。
要修复这个问题,需要在 `grep` 命令中添加 `awk '{print $1}'` 来提取出显示器的 ID。改进后的代码如下:
```
local focus=$(dumpsys window | grep "mCurrentFocus" | tail -n 1 | awk '{print $NF}' | cut -d'}' -f1)
local displays=$(dumpsys window | grep display | grep 'imeInputTarget')
local display_id=$(echo "$displays" | grep "$focus" | awk '{print $1}')
echo $display_id
```
这段代码的作用与之前的代码相同,都是获取当前焦点所在窗口所在的显示器 ID,但它修复了没有提取出显示器 ID 的问题。