android 无障碍服务 ACTION_CLICK 不适用于 window 覆盖
android accessibility service ACTION_CLICK doesn't work with window overlay
我正在尝试使用辅助功能单击强制停止按钮 service.when 我找到了强制停止按钮 我使用以下方法单击它:
childNodeView.performAction(AccessibilityNodeInfo.ACTION_CLICK);
这在普通情况下是成功的,但是当我尝试使用 window 管理器覆盖对用户隐藏该过程时,点击不起作用。这可能是因为我试图点击的按钮上方有一个屏幕,但是 Play 商店中有几个应用程序具有所描述的功能 window overlay
这些是我的 window 经理参数:
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_FULLSCREEN,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP | Gravity.START;
oneTapProgressView = new OneTapProgressView(this);
windowManager.addView(oneTapProgressView, params);
注意:我运行这是来自不同的服务,而不是来自无障碍服务
如何使用 window 叠加层执行点击?
我认为这与覆盖类型有关。具体来说 TYPE_PHONE。 Phone 叠加层有特殊的机制来捕获事件,这样用户就不会不小心用脸颊触摸按钮,为什么要在 phone 上说话。
你应该试试不同的类型。对于 Android O 尝试:
TYPE_APPLICATION_OVERLAY
对于您想要的先前操作系统:
TYPE_SYSTEM_ALERT
这两个都需要以下权限:
SYSTEM_ALERT_WINDOW
此外,如果以上方法无法解决问题,以下标记可能会有用:
FLAG_NOT_FOCUSABLE
我正在尝试使用辅助功能单击强制停止按钮 service.when 我找到了强制停止按钮 我使用以下方法单击它:
childNodeView.performAction(AccessibilityNodeInfo.ACTION_CLICK);
这在普通情况下是成功的,但是当我尝试使用 window 管理器覆盖对用户隐藏该过程时,点击不起作用。这可能是因为我试图点击的按钮上方有一个屏幕,但是 Play 商店中有几个应用程序具有所描述的功能 window overlay
这些是我的 window 经理参数:
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_FULLSCREEN,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP | Gravity.START;
oneTapProgressView = new OneTapProgressView(this);
windowManager.addView(oneTapProgressView, params);
注意:我运行这是来自不同的服务,而不是来自无障碍服务
如何使用 window 叠加层执行点击?
我认为这与覆盖类型有关。具体来说 TYPE_PHONE。 Phone 叠加层有特殊的机制来捕获事件,这样用户就不会不小心用脸颊触摸按钮,为什么要在 phone 上说话。
你应该试试不同的类型。对于 Android O 尝试:
TYPE_APPLICATION_OVERLAY
对于您想要的先前操作系统:
TYPE_SYSTEM_ALERT
这两个都需要以下权限:
SYSTEM_ALERT_WINDOW
此外,如果以上方法无法解决问题,以下标记可能会有用:
FLAG_NOT_FOCUSABLE