dumpsys window | grep display | grep 'imeInputTarget' imeInputTarget in display# 0 Window{fc89d96 u0 com.ktcp.video/com.ktcp.video.activity.detail.DetailCoverActivity} imeInputTarget in display# 2 Window{e244e21 u0 com.tencent.start.tv/com.tencent.start.ui.SplashActivity} 优化成这种
时间: 2024-03-02 11:49:07 浏览: 20
你可以使用以下命令,将输出结果格式化为两行,每行包含一个显示器ID和对应的Activity名称:
```
dumpsys window | grep display | grep 'imeInputTarget' | awk -F '[{ }]' '{print $3, $NF}' | cut -d '#' -f 2
```
该命令的执行流程如下:
1. 使用`dumpsys window`命令获取窗口信息,使用`grep display | grep 'imeInputTarget'`命令获取当前输入法目标所在的所有显示器信息。
2. 使用`awk -F '[{ }]' '{print $3, $NF}'`命令将每行输出结果使用大括号分割,提取第3个字段(显示器ID)和最后一个字段(Activity名称)。
3. 使用`cut -d '#' -f 2`命令仅提取显示器ID,并将两行输出结果合并成一行。
输出结果类似于:
```
0 com.ktcp.video/com.ktcp.video.activity.detail.DetailCoverActivity
2 com.tencent.start.tv/com.tencent.start.ui.SplashActivity
```
其中,第一列为显示器ID,第二列为对应的Activity名称。
相关问题
dumpsys window | grep display | grep 'imeInputTarget' imeInputTarget in display# 0 Window{d55179e u0 com.ktcp.video/com.ktcp.video.activity.HomeActivity} imeInputTarget in display# 2 Window{d963b95 u0 com.tencent.start.tv/com.tencent.start.ui.SplashActivity} rk3588_s:/ # dumpsys window | grep "mCurrentFocus" | tail -n 1 | awk '{print $NF}' | cut -d'}' -f1 com.ktcp.video/com.ktcp.video.activity.HomeActivity
根据你提供的输出,当前活跃窗口 `com.ktcp.video/com.ktcp.video.activity.HomeActivity` 所在的显示器 ID 为 0。而不活跃窗口 `com.tencent.start.tv/com.tencent.start.ui.SplashActivity` 所在的显示器 ID 为 2。
因此,你可以使用下面的脚本来获取当前不活跃窗口所在的显示器 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')
echo "$(echo "$displays" | grep $focus)"
}
# 获取当前活跃窗口所在的显示器 ID
display_id=$(get_display_id)
# 获取当前不活跃窗口所在的显示器 ID
inactive_windows=$(dumpsys window windows | grep -v "mCurrentFocus" | grep "Window #" | awk '{print $1}')
for window in $inactive_windows
do
if [[ $(dumpsys window $window | grep display) == $display_id ]]; then
inactive_window_id=$(echo $window | cut -d"#" -f2)
echo "Inactive window ID: $inactive_window_id"
fi
done
```
运行上述脚本后,将输出当前不活跃窗口所在的显示器 ID。
dumpsys window | grep display | grep 'imeInputTarget' | cut -d'#' -f2 | awk '{print $1}' && dumpsys window | grep display | grep 'imeInputTarget' | cut -d'#' -f2 | awk '{print $NF}' | cut -d'}' -f1 0 2 com.ktcp.video/com.ktcp.video.activity.ScreenSaverActivity com.tencent.start.tv/com.tencent.start.ui.SplashActivity
这个命令输出了当前输入法窗口所在应用的包名和窗口信息。其中,`com.ktcp.video/com.ktcp.video.activity.ScreenSaverActivity` 表示第一个应用程序的栈顶 Activity 是 `ScreenSaverActivity`,而 `com.tencent.start.tv/com.tencent.start.ui.SplashActivity` 则表示第二个应用程序的栈顶 Activity 是 `SplashActivity`。
如果你只想要包名和栈顶 Activity 的信息,可以使用以下命令:
```
adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp' && adb shell dumpsys activity top | grep 'ACTIVITY' | head -n 2 | awk -F ' ' '{print $4}'
```
这个命令会先输出当前焦点窗口所在应用的信息,然后输出前两个 Activity 的包名和类名,即第一个应用程序的栈顶 Activity 和第二个应用程序的栈顶 Activity。你可以根据需要对输出结果进行处理,提取出包名和栈顶 Activity 的信息。