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=""):