From e5018c4e456e2a7337167030294465af7a02686c Mon Sep 17 00:00:00 2001 From: butubb <1422726308@qq.com> Date: Fri, 4 Sep 2026 13:52:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20de=5Fforeground=5Fapp=20fallback=20mFocu?= =?UTF-8?q?sedApp=EF=BC=88MIUI=20=E8=BF=87=E6=B8=A1=E6=9C=9F=20mCurrentFoc?= =?UTF-8?q?us=3Dnull=20=E6=97=B6=E5=89=8D=E5=8F=B0=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mcp_server/direct_ops.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/mcp_server/direct_ops.py b/mcp_server/direct_ops.py index d875500..db18582 100644 --- a/mcp_server/direct_ops.py +++ b/mcp_server/direct_ops.py @@ -40,10 +40,14 @@ def stop_app(serial, package): def foreground_app(serial): - """当前前台 App 包名(dumpsys window 解析;失败返回空)。""" - out = _adb(serial, "dumpsys", "window", timeout=15) - m = re.search(r"mCurrentFocus=.*?([\w.]+)/", out or "") - return m.group(1) if m else "" + """当前前台 App 包名(dumpsys window;mCurrentFocus 为空时 fallback mFocusedApp)。""" + out = _adb(serial, "dumpsys", "window", timeout=15) or "" + m = re.search(r"mCurrentFocus=.*?([\w.]+)/", out) + if m: + return m.group(1) + # 部分 MIUI 焦点在 IME/过渡时 mCurrentFocus=null,用 mFocusedApp 兜底 + m2 = re.search(r"mFocusedApp=.*?([\w.]+)/", out) + return m2.group(1) if m2 else "" def list_apps(serial, keyword=""):