From 45ff81dfcb755fba1a36722d3596b26fd1407107 Mon Sep 17 00:00:00 2001 From: Sally Yuen Date: Thu, 1 Sep 2022 19:38:29 +0000 Subject: [PATCH] Update View with warnings about settings focus Bug: 229991765 Test: n/a Change-Id: I76b342bde5fc56eb297a0957028c7ea4e1303a16 --- core/java/android/view/View.java | 11 +++++++++++ .../view/accessibility/AccessibilityNodeInfo.java | 3 +++ 2 files changed, 14 insertions(+) diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 996dee0cd2da4..84f55e34348fd 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -13896,6 +13896,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * See also {@link #focusSearch(int)}, which is what you call to say that you * have focus, and you want your parent to look for the next one. * + *

+ * Note: Avoid setting accessibility focus. This is intended to be controlled by screen + * readers. Apps changing focus can confuse screen readers, so the resulting behavior can vary + * by device and screen reader version. + * * @return Whether this view actually took accessibility focus. * * @hide @@ -14734,6 +14739,12 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * {@link AccessibilityNodeInfo#ACTION_SCROLL_FORWARD} to nested scrolling parents if * {@link #isNestedScrollingEnabled() nested scrolling is enabled} on this view.

* + *

+ * Note: Avoid setting accessibility focus with + * {@link AccessibilityNodeInfo#ACTION_ACCESSIBILITY_FOCUS}. This is intended to be controlled + * by screen readers. Apps changing focus can confuse screen readers, so the resulting behavior + * can vary by device and screen reader version. + * * @param action The action to perform. * @param arguments Optional action arguments. * @return Whether the action was performed. diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java index 6ae59bf0c8fc9..6c2039551f31b 100644 --- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java +++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java @@ -4812,6 +4812,9 @@ public class AccessibilityNodeInfo implements Parcelable { /** * Action that gives accessibility focus to the node. + *

+ * This is intended to be used by screen readers. Apps changing focus can confuse screen + * readers, so the resulting behavior can vary by device and screen reader version. */ public static final AccessibilityAction ACTION_ACCESSIBILITY_FOCUS = new AccessibilityAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS);