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 16:53:18 浏览: 74
好的,以下是一个简单的 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` 调试功能。
相关问题
local focus=$(dumpsys window | grep "mCurrentFocus" | tail -n 1 | awk '{print $NF}' | cut -d'}' -f1) local displays=$(dumpsys window | grep display | grep 'imeInputTarget') echo $displays | grep $focus 可以这样吗
不可以这样做。因为在函数 `get_display_id()` 中,变量 `focus` 和变量 `displays` 的值是获取当前活跃窗口信息和所有显示器信息的中间变量,并没有保存当前活跃窗口所在的显示器 ID。
在这种情况下,使用 `echo $displays | grep $focus` 来查找当前活跃窗口所在的显示器 ID 是不准确的。因为在变量 `displays` 中可能包含多个显示器的信息,而当前活跃窗口所在的显示器 ID 只是其中的一个,如果使用 `grep` 命令来查找当前活跃窗口所在的显示器 ID,可能会得到错误的结果。
正确的方法是,在函数 `get_display_id()` 中使用 `grep` 命令和正则表达式来提取当前活跃窗口所在的显示器 ID,然后将其保存在变量中并返回。这样可以保证获取的是正确的当前活跃窗口所在的显示器 ID。
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"
}
```
这样可以更加健壮地处理异常情况。
阅读全文