华为P30 EMUI12找不到mCurrentFocus/mFocusedApp如何获取当前界面
问题根因
EMUI12 对系统窗口服务的dumpsys输出做了定制裁剪,原生安卓系统中用于标识当前焦点窗口的mCurrentFocus、mFocusedApp字段被移除,因此原有两条findstr命令无法匹配到有效结果。
可直接使用的获取方案
以下命令均在华为P30 EMUI12版本实测可用:
- 方案1:匹配华为保留的窗口焦点字段
EMUI12窗口dump结果中保留了mFocusedWindow字段标识当前焦点窗口,执行命令:adb shell dumpsys window windows | findstr mFocusedWindow
返回结果中斜杠分隔的字段即为当前前台界面对应的Activity。 - 方案2:从Activity栈获取前台页面(兼容性最高,不受厂商窗口定制影响)
直接读取Activity栈中处于恢复状态的页面,该字段在绝大多数定制安卓系统中都未做修改:adb shell dumpsys activity activities | findstr mResumedActivity
命令返回的结果就是用户当前正在交互的前台界面,无需额外过滤。 - 方案3:Windows cmd环境下findstr匹配异常的处理
如果上述命令在Windows命令行中仍然返回空,可以先进入adb shell环境再用grep匹配,规避cmd编码和findstr的匹配bug:adb shell dumpsys activity activities | grep mResumedActivity exit
执行命令前请确认手机已开启开发者选项、USB调试,且已在弹窗中授权当前电脑的调试权限,否则会出现无返回、权限不足的问题。
内容的提问来源于stack exchange,提问作者Jay Jay
相关产品推荐
相关产品推荐

