真机实测(vivo S6 + 讯飞,2026-10-30):软键盘已隐藏、mInputShown=false, 但 imm.isAcceptingText 仍返回 true——只要 InputConnection 还绑着它就是 true。 原先用它判断「先关键盘还是先断会话」,后果是第一次 BACK 空转,第二次也进不来 (我们已 return true),会话再也断不掉。这不是推测,是完整链路 proof 跑到 step 5 时实测失败的。 改为自测:比较根窗口可见区域与窗口高度,被 IME 吃掉超过 15% 视为可见; 用 OnGlobalLayoutListener 被动跟踪(没有公开 API 能直接查询,API 34 上 getInputMethodWindowVisibleHeight 也不是公开接口)。阈值用比例不用固定像素。 验证:diag 依次显示「键盘可见」→「键盘隐藏」→ 会话断开回表单; 随后完整链路 proof 与中文 proof 均复跑通过。 同时修正 phone_chain_proof 的 V4 断言:uiautomator 属性顺序是 text= 在 class= 之前,原正则要求反序,导致打印空表单行仍判 PASS(假绿)。 空 EditText 的 text 会回显 hint,所以判据改为比对实际输入值。 |
||
|---|---|---|
| .. | ||
| bench.md | ||
| capture_evidence.ps1 | ||
| ime_chinese_proof.ps1 | ||
| ime_commit_proof.ps1 | ||
| phone_chain_proof.ps1 | ||
| punch_probe.py | ||
| rendezvous.py | ||
| shot.ps1 | ||
| text_injection_proof.ps1 | ||
| text_target.ps1 | ||