Я столкнулся с проблемой, заключающейся в том, что AccessibilityEvent и узлы не содержат Install Кнопка, при попытке найти ее с помощью nodeInfo.findAccessibilityNodeInfosByText("Installieren") - находится текст, содержащий строку "Installieren", но не кнопка. Вот изображение события с содержащимся в нем текстом — текст установки отсутствует.
Событие с диалоговым окном рядом с ним
Мой код, который сработал пока Android 14 не будет выглядеть так:
Код: Выделить всё
private boolean handlePackageInstallerEvent(AccessibilityEvent event) {
if (isWindowStateChgEvent(event)
&& event.getPackageName()!= null
&& PACKAGE_PACKAGEINSTALLER.equals(event.getPackageName().toString())) {
AccessibilityNodeInfo nodeInfo = event.getSource();
if (nodeInfo != null) {
// More code ...
if (childNodeInfos.isEmpty()) {
// Check for installation case
// Issue: does not find any Button with text "Installieren" from Android 14!
childNodeInfos = nodeInfo.findAccessibilityNodeInfosByText("Installieren");
}
for (AccessibilityNodeInfo childNodeInfo : childNodeInfos) {
if (childNodeInfo.getClassName().toString().contains("Button")) {
CharSequence text = childNodeInfo.getText();
boolean clickable = childNodeInfo.isClickable();
boolean enabled = childNodeInfo.isEnabled();
childNodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
}
}
return true;
}
return false;
}
Когда я вручную нажимаю кнопку установки, я не получаю AccessibilityEvent (что-то вроде BorderChangeEvent).
Однако, когда я прослушиваю событие наведения и навожу курсор на Install нажимая кнопку мыши, я наконец получаю кнопку, но ее текст пуст и имеет тот же идентификатор, что и кнопка «Отмена».
Это новая мера безопасности, о которой я не знаю? Я уже проверил наличие новых разрешений, которые, возможно, потребуется добавить, но их нет.
Подробнее здесь: https://stackoverflow.com/questions/786 ... -installer