You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 11 SYSTEM_ALERT_WINDOW与SurfaceView触摸行为问题咨询

Android 11 SurfaceView悬浮窗触摸穿透问题解析

这是Android 11针对SYSTEM_ALERT_WINDOW权限窗口推出的政策级限制,目的是防范低透明度悬浮窗恶意拦截用户触摸操作。而SurfaceView因为采用独立于View体系的底层Surface渲染,不遵循普通View的透明度触摸穿透规则,所以会被完全拦截触摸事件。

可行解决思路
  • 替换为TextureView:TextureView属于View体系范畴,遵循普通View的触摸穿透规则,只要将其透明度设为<0.8,就能让触摸事件正常穿透到下层应用。需要注意的是,TextureView的性能略低于SurfaceView,全屏场景下建议先做帧率测试。
  • 借助无障碍窗口权限:如果应用功能符合无障碍场景(比如辅助操作、屏幕辅助工具类),可以申请AccessibilityService权限,通过无障碍窗口承载SurfaceView——这类窗口属于政策例外,不受触摸拦截限制。但要注意,无障碍权限需要用户手动授权,且不能滥用,否则可能触发Google Play审核拒绝。
  • 动态切换窗口状态:仅在需要交互时保持悬浮窗可触摸,不需要交互时将窗口设为完全透明(alpha=0.0),让触摸事件自动穿透。这种方式需要精准控制交互时机,可能会影响用户体验流畅度。
  • 设置触摸不可标记:如果你的SurfaceView悬浮窗本身不需要接收触摸事件,直接给Window添加FLAG_NOT_TOUCHABLE标记,触摸事件会直接穿透到下层应用,无需依赖透明度规则。

内容的提问来源于stack exchange,提问作者Arturs Vancans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:54:59