summaryrefslogtreecommitdiffstats
path: root/core/java/android/accessibilityservice
diff options
context:
space:
mode:
authorSvetoslav Ganov <svetoslavganov@google.com>2012-04-18 18:47:13 -0700
committerSvetoslav Ganov <svetoslavganov@google.com>2012-04-18 18:50:57 -0700
commit0846e29d0b5640cfad4496c8484fb9aaa2ba4ccf (patch)
tree3f9a052e6359be3a95621478b343bf16a1efed5e /core/java/android/accessibilityservice
parent005b83b0c62d3d0538f0d566b08bd457015ec661 (diff)
downloadframeworks_base-0846e29d0b5640cfad4496c8484fb9aaa2ba4ccf.zip
frameworks_base-0846e29d0b5640cfad4496c8484fb9aaa2ba4ccf.tar.gz
frameworks_base-0846e29d0b5640cfad4496c8484fb9aaa2ba4ccf.tar.bz2
Adding API for getting the root node info in the active window.
1. This APIs is useful for accessibility services since very often they want to get access to the root node in the current window to determine where accessibility focus is and subsequently find a next view to take accessibility focus. Change-Id: Ide5231f832d9ce2e9b14dc411dfd675f753a4edb
Diffstat (limited to 'core/java/android/accessibilityservice')
-rw-r--r--core/java/android/accessibilityservice/AccessibilityService.java19
1 files changed, 15 insertions, 4 deletions
diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java
index eed8aa6..4e340c0 100644
--- a/core/java/android/accessibilityservice/AccessibilityService.java
+++ b/core/java/android/accessibilityservice/AccessibilityService.java
@@ -426,13 +426,11 @@ public abstract class AccessibilityService extends Service {
throw new IllegalStateException("AccessibilityService not connected."
+ " Did you receive a call of onServiceConnected()?");
}
- AccessibilityNodeInfo root = AccessibilityInteractionClient.getInstance()
- .findAccessibilityNodeInfoByAccessibilityId(connectionId,
- AccessibilityNodeInfo.ACTIVE_WINDOW_ID, AccessibilityNodeInfo.ROOT_NODE_ID,
- AccessibilityNodeInfo.FLAG_PREFETCH_DESCENDANTS);
+ AccessibilityNodeInfo root = getRootInActiveWindow();
if (root == null) {
return;
}
+
AccessibilityNodeInfo current = root.findFocus(AccessibilityNodeInfo.FOCUS_ACCESSIBILITY);
if (current == null) {
current = root;
@@ -480,6 +478,19 @@ public abstract class AccessibilityService extends Service {
}
/**
+ * Gets the root node in the currently active window if this service
+ * can retrieve window content.
+ *
+ * @return The root node if this service can retrieve window content.
+ */
+ public AccessibilityNodeInfo getRootInActiveWindow() {
+ return AccessibilityInteractionClient.getInstance()
+ .findAccessibilityNodeInfoByAccessibilityId(mConnectionId,
+ AccessibilityNodeInfo.ACTIVE_WINDOW_ID, AccessibilityNodeInfo.ROOT_NODE_ID,
+ AccessibilityNodeInfo.FLAG_PREFETCH_DESCENDANTS);
+ }
+
+ /**
* Performs a global action. Such an action can be performed
* at any moment regardless of the current application or user
* location in that application. For example going back, going