@@ -426,13 +426,11 @@ protected void onGesture(int gestureId) {
426426 throw new IllegalStateException ("AccessibilityService not connected."
427427 + " Did you receive a call of onServiceConnected()?" );
428428 }
429- AccessibilityNodeInfo root = AccessibilityInteractionClient .getInstance ()
430- .findAccessibilityNodeInfoByAccessibilityId (connectionId ,
431- AccessibilityNodeInfo .ACTIVE_WINDOW_ID , AccessibilityNodeInfo .ROOT_NODE_ID ,
432- AccessibilityNodeInfo .FLAG_PREFETCH_DESCENDANTS );
429+ AccessibilityNodeInfo root = getRootInActiveWindow ();
433430 if (root == null ) {
434431 return ;
435432 }
433+
436434 AccessibilityNodeInfo current = root .findFocus (AccessibilityNodeInfo .FOCUS_ACCESSIBILITY );
437435 if (current == null ) {
438436 current = root ;
@@ -479,6 +477,19 @@ protected void onGesture(int gestureId) {
479477 }
480478 }
481479
480+ /**
481+ * Gets the root node in the currently active window if this service
482+ * can retrieve window content.
483+ *
484+ * @return The root node if this service can retrieve window content.
485+ */
486+ public AccessibilityNodeInfo getRootInActiveWindow () {
487+ return AccessibilityInteractionClient .getInstance ()
488+ .findAccessibilityNodeInfoByAccessibilityId (mConnectionId ,
489+ AccessibilityNodeInfo .ACTIVE_WINDOW_ID , AccessibilityNodeInfo .ROOT_NODE_ID ,
490+ AccessibilityNodeInfo .FLAG_PREFETCH_DESCENDANTS );
491+ }
492+
482493 /**
483494 * Performs a global action. Such an action can be performed
484495 * at any moment regardless of the current application or user
0 commit comments