我正在尝试使用辅助功能服务单击强制停止按钮。当我找到FORCE STOP按钮时,我使用以下命令单击它:
childNodeView.performAction(AccessibilityNodeInfo.ACTION_CLICK);
这在普通情况下是成功的,但是当我尝试使用窗口管理器覆盖来隐藏用户的过程时,点击不起作用。这可能是因为我试图点击的按钮上有一个屏幕,但是在Play商店中有几个应用程序具有窗口覆盖的所述功能
这些是我的窗口管理员参数:
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);
注意:我是从其他服务运行的,而不是从辅助功能服务
运行如何使用窗口叠加层执行点击?
答案 0 :(得分:1)
我认为这与叠加类型有关。特别是TYPE_PHONE。电话覆盖有特殊的机制来捕捉事件,这样用户就不会用他们的脸颊不小心触摸按钮,为什么要通过电话交谈。
你应该尝试不同的类型。对于Android O尝试:
TYPE_APPLICATION_OVERLAY
对于您想要的先前操作系统:
TYPE_SYSTEM_ALERT
这两项都需要以下许可:
SYSTEM_ALERT_WINDOW
此外,如果上述单独的解决办法,以下标志可能会有用:
FLAG_NOT_FOCUSABLE