I have written an Android app using AccessibilityService. This means: when a text appears "xxx", it auto clicks it and auto closes. But when I scroll my window or something changed in the window it clicks and closes again.
So I printed accessibilityNodeInfo.toString()
in Logcat, but the same accessibilityNodeInfo
returns different strings. I'll show the code to clarify what I mean:
AccessibilityNodeInfo previousAccessibilityNodeInfo = null;
mAccessibilityNodeInfo = event.getSource();
if (mAccessibilityNodeInfo == null) {
return;
}
if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED) {
List<AccessibilityNodeInfo> accessibilityNodeInfos
= mAccessibilityNodeInfo.findAccessibilityNodeInfosByText("xxx");
if (accessibilityNodeInfos != null && accessibilityNodeInfos.size() > 0) {
AccessibilityNodeInfo info = accessibilityNodeInfos.get(accessibilityNodeInfos.size() - 1);
Log.d(TAG,info.toString());
if (previousAccessibilityNodeInfo == null) {
previousAccessibilityNodeInfo = info;
info.getParent().performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
else if (previousAccessibilityNodeInfo != null && previousAccessibilityNodeInfo != info) {
info.getParent().performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
else {
return;
}
}
}
// Log info: The same AccessibilityNodeInfo
when I scrolled returns different strings.
accessibility.AccessibilityNodeInfo@36eea0;
accessibility.AccessibilityNodeInfo@38443e;
accessibility.AccessibilityNodeInfo@3999dc;
accessibility.AccessibilityNodeInfo@3aef7a;
accessibility.AccessibilityNodeInfo@3c4518;
// In the above code is the same AccessibilityNodeinfo
So how should I compare AccessibilityNodeInfo? Achieve such results that as soon as return if it is a previous marked AccessibilityNodeInfo.
Sorry for my bad English.