为了解决这个问题,可以使用以下方法:在您的AccessibilityService中,您可以重写onInterrupt()方法,并在其中手动杀死AlertDialog。下面是一段示例代码:
@Override
public void onInterrupt() {
AccessibilityNodeInfo rootNode = getRootInActiveWindow();
if(rootNode != null) {
List
这个代码片段会查找包含'取消”或'发送”文本的节点,如果存在,则关闭AlertDialog。请注意,全局操作'BACK”被用于模拟用户按下'返回”按钮。
当有多个AlertDialog窗口时,您需要使用循环获取每个窗口节点并根据需要关闭它们。
在上述代码示例中,我们使用了getRootInActiveWindow()方法获取当前活动窗口的根节点。然后我们使用findAccessibilityNodeInfosByText()方法查找包含'取消”或'发送”文本的节点。如果这些节点存在,我们使用performGlobalAction()方法模拟按下'返回”按钮。
请注意,这种方法可能会影响USSD响应,因此请谨慎使用。