accessibilityNodeInfo AlertDialog的子节点始终为null。如何获得按钮?

时间:2019-06-25 07:43:07

标签: android

我正在开发一个辅助功能应用程序,并希望自动单击AlertDialog上的一个按钮。使用权限“ Allow”按钮可以完成操作,但是当我遍历系统AlertDialog上的子节点时(例如,当您尝试发送短信时,它会要求确认,我想使它自动化)。

    public void autoAllowSend(AccessibilityEvent event){
    AccessibilityNodeInfo accessibilityNodeInfo = event.getSource();
    if (accessibilityNodeInfo != null) {
        for (int i = 0; i < accessibilityNodeInfo.getChildCount(); i++) {
            AccessibilityNodeInfo child = accessibilityNodeInfo.getChild(i);
            if (child != null) {
                CharSequence text = child.getText();
                Logg("B", child.getClassName().toString());
            }else{
                Logg("A","Child is Null");
            }
        }
    }else{
        Logg("A","accessibilityNodeInfo is null.");
    }
}

我尝试使用列表列表= nodeInfo.findAccessibilityNodeInfosByText(“ Send”); -它没有显示出来。在event.toString上,我可以看到按钮及其文本“发送”,但可访问性虽然具有所有必需的权限,却看不到它。

1 个答案:

答案 0 :(得分:0)

尝试以下代码:

int count = -1;
for (AccessibilityNodeInfo leaf : getLeaves(event)) {
    if (leaf.getClassName().toString().toLowerCase().contains("button")) {
        count++;
        if (count == index) {
            leaf.performAction(AccessibilityNodeInfo.ACTION_CLICK);
        }
    }
}