У меня есть AccessibilityEvent
, который может автоматически остановить приложение. Но при запуске приложения инфо-намерения он переходит в бесконечный цикл включения/выключения предупреждения.Предотвращение onAccessibilityEvent (событие AccessibilityEvent) идет в бесконечном цикле
Как я могу предотвратить это? Вот код:
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
if (AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED == event
.getEventType()) {
AccessibilityNodeInfo nodeInfo = event.getSource();
if (nodeInfo == null) {
return;
}
List<AccessibilityNodeInfo> list = nodeInfo
.findAccessibilityNodeInfosByViewId("com.android.settings:id/force_stop_button");
for (AccessibilityNodeInfo node : list) {
Log.i(TAG, "check1 = " + check);
node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
check = true;
}
list = nodeInfo
.findAccessibilityNodeInfosByText("CANCEL");
for (AccessibilityNodeInfo node : list) {
node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
}
}
И кстати, любая идея, чтобы получить force_stop_button
нажал сразу после приложения информации намерения начать?
EDIT: Я думаю, проблема в AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED
. Если я обойду эту проверку, она работает, но очень трудно контролировать.
На самом деле это не то, что я хочу спросить. Потому что он даже не щелкнет «Force Stop». Так почему я должен заботиться о нажатии «Отмена» или «ОК»? –
Попробуйте отредактировать, что я сделал. –
В моем коде сейчас на самом деле есть несколько «отложенных» кодов. Но это очень пассивно. Во-первых, если мой телефон просто занимался действительно тяжелой работой, и я запускаю этот код, 300 мс кажется недостаточным. Во-вторых, я думаю, что код должен быть задержан, это «findnode», а не «performAction». Но так или иначе, один взнос: D –