Android APIs
public class

AccessibilityServiceInfo

extends Object
implements Parcelable
java.lang.Object
   ↳ android.accessibilityservice.AccessibilityServiceInfo

Class Overview

This class describes an AccessibilityService. The system notifies an AccessibilityService for AccessibilityEvents according to the information encapsulated in this class.

Developer Guides

For more information about creating AccessibilityServices, read the Accessibility developer guide.

Summary

XML Attributes
Attribute Name Related Method Description
android:accessibilityEventTypes The event types this serivce would like to receive as specified in AccessibilityEvent
android:accessibilityFeedbackType The feedback types this serivce provides as specified in AccessibilityServiceInfo
android:accessibilityFlags Additional flags as specified in AccessibilityServiceInfo
android:canRequestEnhancedWebAccessibility Attribute whether the accessibility service wants to be able to request enhanced web accessibility enhancements. 
android:canRequestFilterKeyEvents Attribute whether the accessibility service wants to be able to request to filter key events. 
android:canRequestTouchExplorationMode Attribute whether the accessibility service wants to be able to request touch exploration mode in which touched items are spoken aloud and the UI can be explored via gestures. 
android:canRetrieveWindowContent Attribute whether the accessibility service wants to be able to retrieve the active window content. 
android:description Short description of the accessibility serivce purpose or behavior. 
android:notificationTimeout The minimal period in milliseconds between two accessibility events of the same type are sent to this serivce. 
android:packageNames Comma separated package names from which this serivce would like to receive events (leave out for all packages). 
android:settingsActivity Component name of an activity that allows the user to modify the settings for this service. 
Constants
int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY Capability: This accessibility service can request enhanced web accessibility enhancements.
int CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS Capability: This accessibility service can request to filter the key event stream.
int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION Capability: This accessibility service can request touch exploration mode in which touched items are spoken aloud and the UI can be explored via gestures.
int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT Capability: This accessibility service can retrieve the active window content.
int DEFAULT If an AccessibilityService is the default for a given type.
int FEEDBACK_ALL_MASK Mask for all feedback types.
int FEEDBACK_AUDIBLE Denotes audible (not spoken) feedback.
int FEEDBACK_BRAILLE Denotes braille feedback.
int FEEDBACK_GENERIC Denotes generic feedback.
int FEEDBACK_HAPTIC Denotes haptic feedback.
int FEEDBACK_SPOKEN Denotes spoken feedback.
int FEEDBACK_VISUAL Denotes visual feedback.
int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS If this flag is set the system will regard views that are not important for accessibility in addition to the ones that are important for accessibility.
int FLAG_REPORT_VIEW_IDS This flag requests that the AccessibilityNodeInfos obtained by an AccessibilityService contain the id of the source view.
int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY This flag requests from the system to enable web accessibility enhancing extensions.
int FLAG_REQUEST_FILTER_KEY_EVENTS This flag requests from the system to filter key events.
int FLAG_REQUEST_TOUCH_EXPLORATION_MODE This flag requests that the system gets into touch exploration mode.
int FLAG_RETRIEVE_INTERACTIVE_WINDOWS This flag indicates to the system that the accessibility service wants to access content of all interactive windows.
[Expand]
Inherited Constants
From interface android.os.Parcelable
Fields
public static final Creator<AccessibilityServiceInfo> CREATOR
public int eventTypes The event types an AccessibilityService is interested in.
public int feedbackType The feedback type an AccessibilityService provides.
public int flags This field represents a set of flags used for configuring an AccessibilityService.
public long notificationTimeout The timeout after the most recent event of a given type before an AccessibilityService is notified.
public String[] packageNames The package names an AccessibilityService is interested in.
Public Constructors
AccessibilityServiceInfo()
Creates a new instance.
Public Methods
static String capabilityToString(int capability)
Returns the string representation of a capability.
int describeContents()
Describe the kinds of special objects contained in this Parcelable's marshalled representation.
boolean equals(Object obj)
Compares this instance with the specified object and indicates if they are equal.
static String feedbackTypeToString(int feedbackType)
Returns the string representation of a feedback type.
static String flagToString(int flag)
Returns the string representation of a flag.
boolean getCanRetrieveWindowContent()
This method was deprecated in API level 18. Use getCapabilities().
int getCapabilities()
Returns the bit mask of capabilities this accessibility service has such as being able to retrieve the active window content, etc.
String getDescription()
This method was deprecated in API level 16. Use loadDescription(PackageManager).
String getId()
The accessibility service id.
ResolveInfo getResolveInfo()
The service ResolveInfo.
String getSettingsActivityName()
The settings activity name.
int hashCode()
Returns an integer hash code for this object.
String loadDescription(PackageManager packageManager)
The localized description of the accessibility service.
String toString()
Returns a string containing a concise, human-readable description of this object.
void writeToParcel(Parcel parcel, int flagz)
Flatten this object in to a Parcel.
[Expand]
Inherited Methods
From class java.lang.Object
From interface android.os.Parcelable

XML Attributes

android:accessibilityEventTypes

The event types this serivce would like to receive as specified in AccessibilityEvent. This setting can be changed at runtime by calling android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo).

Must be one or more (separated by '|') of the following constant values.

ConstantValueDescription
typeViewClicked0x00000001 Receives TYPE_VIEW_CLICKED events.
typeViewLongClicked0x00000002 Receives TYPE_VIEW_LONG_CLICKED events.
typeViewSelected0x00000004 Receives TYPE_VIEW_SELECTED events.
typeViewFocused0x00000008 Receives TYPE_VIEW_FOCUSED events.
typeViewTextChanged0x00000010 Receives TYPE_VIEW_TEXT_CHANGED events.
typeWindowStateChanged0x00000020 Receives TYPE_WINDOW_STATE_CHANGED events.
typeNotificationStateChanged0x00000040 Receives TYPE_NOTIFICATION_STATE_CHANGED events.
typeViewHoverEnter0x00000080 Receives TYPE_VIEW_HOVER_ENTER events.
typeViewHoverExit0x00000100 Receives TYPE_VIEW_HOVER_EXIT events.
typeTouchExplorationGestureStart0x00000200 Receives TYPE_TOUCH_EXPLORATION_GESTURE_START events.
typeTouchExplorationGestureEnd0x00000400 Receives TYPE_TOUCH_EXPLORATION_GESTURE_END events.
typeWindowContentChanged0x00000800 Receives TYPE_WINDOW_CONTENT_CHANGED events.
typeViewScrolled0x000001000 Receives TYPE_VIEW_SCROLLED events.
typeViewTextSelectionChanged0x000002000 Receives TYPE_VIEW_TEXT_SELECTION_CHANGED events.
typeAllMask0xffffffff Receives TYPES_ALL_MASK i.e. all events.

This corresponds to the global attribute resource symbol accessibilityEventTypes.

Related Methods

android:accessibilityFeedbackType

The feedback types this serivce provides as specified in AccessibilityServiceInfo. This setting can be changed at runtime by calling android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo).

Must be one or more (separated by '|') of the following constant values.

ConstantValueDescription
feedbackSpoken0x00000001 Provides FEEDBACK_SPOKEN feedback.
feedbackHaptic0x00000002 Provides FEEDBACK_HAPTIC feedback.
feedbackAudible0x00000004 Provides FEEDBACK_AUDIBLE feedback.
feedbackVisual0x00000008 Provides FEEDBACK_VISUAL feedback.
feedbackGeneric0x00000010 Provides FEEDBACK_GENERIC feedback.
feedbackAllMask0xffffffff Provides FEEDBACK_ALL_MASK feedback.

This corresponds to the global attribute resource symbol accessibilityFeedbackType.

Related Methods

android:accessibilityFlags

Additional flags as specified in AccessibilityServiceInfo. This setting can be changed at runtime by calling android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo).

Must be one or more (separated by '|') of the following constant values.

ConstantValueDescription
flagDefault0x00000001 Has flag DEFAULT
flagIncludeNotImportantViews0x00000002 Has flag FLAG_INCLUDE_NOT_IMPORTANT_VIEWS
flagRequestTouchExplorationMode0x00000004 Has flag FLAG_REQUEST_TOUCH_EXPLORATION_MODE
flagRequestEnhancedWebAccessibility0x00000008 Has flag FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY
flagReportViewIds0x00000010 Has flag FLAG_REPORT_VIEW_IDS
flagRequestFilterKeyEvents0x00000020 Has flag FLAG_REQUEST_FILTER_KEY_EVENTS
flagRetrieveInteractiveWindows0x00000040 Has flag FLAG_RETRIEVE_INTERACTIVE_WINDOWS

This corresponds to the global attribute resource symbol accessibilityFlags.

Related Methods

android:canRequestEnhancedWebAccessibility

Attribute whether the accessibility service wants to be able to request enhanced web accessibility enhancements. For example, installing scripts to make app content more accessible.

Required to allow setting the #AccessibilityServiceInfo#FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY flag.

Must be a boolean value, either "true" or "false".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol canRequestEnhancedWebAccessibility.

Related Methods

android:canRequestFilterKeyEvents

Attribute whether the accessibility service wants to be able to request to filter key events.

Required to allow setting the #AccessibilityServiceInfo#FLAG_REQUEST_FILTER_KEY_EVENTS flag.

Must be a boolean value, either "true" or "false".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol canRequestFilterKeyEvents.

Related Methods

android:canRequestTouchExplorationMode

Attribute whether the accessibility service wants to be able to request touch exploration mode in which touched items are spoken aloud and the UI can be explored via gestures.

Required to allow setting the #AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE flag.

Must be a boolean value, either "true" or "false".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol canRequestTouchExplorationMode.

Related Methods

android:canRetrieveWindowContent

Attribute whether the accessibility service wants to be able to retrieve the active window content. This setting cannot be changed at runtime.

Must be a boolean value, either "true" or "false".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol canRetrieveWindowContent.

Related Methods

android:description

Short description of the accessibility serivce purpose or behavior.

Must be a reference to another resource, in the form "@[+][package:]type:name" or to a theme attribute in the form "?[package:][type:]name".

This corresponds to the global attribute resource symbol description.

Related Methods

android:notificationTimeout

The minimal period in milliseconds between two accessibility events of the same type are sent to this serivce. This setting can be changed at runtime by calling android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo).

Must be an integer value, such as "100".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol notificationTimeout.

Related Methods

android:packageNames

Comma separated package names from which this serivce would like to receive events (leave out for all packages). android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo).

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol packageNames.

Related Methods

android:settingsActivity

Component name of an activity that allows the user to modify the settings for this service. This setting cannot be changed at runtime.

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol settingsActivity.

Related Methods

Constants

public static final int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY

Added in API level 18

Capability: This accessibility service can request enhanced web accessibility enhancements. For example, installing scripts to make app content more accessible.

Constant Value: 4 (0x00000004)

public static final int CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS

Added in API level 18

Capability: This accessibility service can request to filter the key event stream.

Constant Value: 8 (0x00000008)

public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION

Added in API level 18

Capability: This accessibility service can request touch exploration mode in which touched items are spoken aloud and the UI can be explored via gestures.

Constant Value: 2 (0x00000002)

public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT

Added in API level 18

Capability: This accessibility service can retrieve the active window content.

Constant Value: 1 (0x00000001)

public static final int DEFAULT

Added in API level 4

If an AccessibilityService is the default for a given type. Default service is invoked only if no package specific one exists. In case of more than one package specific service only the earlier registered is notified.

Constant Value: 1 (0x00000001)

public static final int FEEDBACK_ALL_MASK

Added in API level 14

Mask for all feedback types.

Constant Value: -1 (0xffffffff)

public static final int FEEDBACK_AUDIBLE

Added in API level 4

Denotes audible (not spoken) feedback.

Constant Value: 4 (0x00000004)

public static final int FEEDBACK_BRAILLE

Added in API level 17

Denotes braille feedback.

Constant Value: 32 (0x00000020)

public static final int FEEDBACK_GENERIC

Added in API level 4

Denotes generic feedback.

Constant Value: 16 (0x00000010)

public static final int FEEDBACK_HAPTIC

Added in API level 4

Denotes haptic feedback.

Constant Value: 2 (0x00000002)

public static final int FEEDBACK_SPOKEN

Added in API level 4

Denotes spoken feedback.

Constant Value: 1 (0x00000001)

public static final int FEEDBACK_VISUAL

Added in API level 4

Denotes visual feedback.

Constant Value: 8 (0x00000008)

public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS

Added in API level 16

If this flag is set the system will regard views that are not important for accessibility in addition to the ones that are important for accessibility. That is, views that are marked as not important for accessibility via IMPORTANT_FOR_ACCESSIBILITY_NO or IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS and views that are marked as potentially important for accessibility via IMPORTANT_FOR_ACCESSIBILITY_AUTO for which the system has determined that are not important for accessibility, are reported while querying the window content and also the accessibility service will receive accessibility events from them.

Note: For accessibility services targeting API version JELLY_BEAN or higher this flag has to be explicitly set for the system to regard views that are not important for accessibility. For accessibility services targeting API version lower than JELLY_BEAN this flag is ignored and all views are regarded for accessibility purposes.

Usually views not important for accessibility are layout managers that do not react to user actions, do not draw any content, and do not have any special semantics in the context of the screen content. For example, a three by three grid can be implemented as three horizontal linear layouts and one vertical, or three vertical linear layouts and one horizontal, or one grid layout, etc. In this context the actual layout mangers used to achieve the grid configuration are not important, rather it is important that there are nine evenly distributed elements.

Constant Value: 2 (0x00000002)

public static final int FLAG_REPORT_VIEW_IDS

Added in API level 18

This flag requests that the AccessibilityNodeInfos obtained by an AccessibilityService contain the id of the source view. The source view id will be a fully qualified resource name of the form "package:id/name", for example "foo.bar:id/my_list", and it is useful for UI test automation. This flag is not set by default.

Constant Value: 16 (0x00000010)

public static final int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY

Added in API level 18

This flag requests from the system to enable web accessibility enhancing extensions. Such extensions aim to provide improved accessibility support for content presented in a WebView. An example of such an extension is injecting JavaScript from a secure source. The system will enable enhanced web accessibility if there is at least one accessibility service that has this flag set. Hence, clearing this flag does not guarantee that the device will not have enhanced web accessibility enabled since there may be another enabled service that requested it.

Services that want to set this flag have to declare this capability in their meta-data by setting the attribute #canRequestEnhancedWebAccessibility canRequestEnhancedWebAccessibility to true, otherwise this flag will be ignored. For how to declare the meta-data of a service refer to AccessibilityService.SERVICE_META_DATA.

Constant Value: 8 (0x00000008)

public static final int FLAG_REQUEST_FILTER_KEY_EVENTS

Added in API level 18

This flag requests from the system to filter key events. If this flag is set the accessibility service will receive the key events before applications allowing it implement global shortcuts. Setting this flag does not guarantee that this service will filter key events since only one service can do so at any given time. This avoids user confusion due to behavior change in case different key filtering services are enabled. If there is already another key filtering service enabled, this one will not receive key events.

Services that want to set this flag have to declare this capability in their meta-data by setting the attribute #canRequestFilterKeyEvents canRequestFilterKeyEvents to true, otherwise this flag will be ignored. For how to declare the meta-data of a service refer to AccessibilityService.SERVICE_META_DATA.

Constant Value: 32 (0x00000020)

public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE

Added in API level 16

This flag requests that the system gets into touch exploration mode. In this mode a single finger moving on the screen behaves as a mouse pointer hovering over the user interface. The system will also detect certain gestures performed on the touch screen and notify this service. The system will enable touch exploration mode if there is at least one accessibility service that has this flag set. Hence, clearing this flag does not guarantee that the device will not be in touch exploration mode since there may be another enabled service that requested it.

For accessibility services targeting API version higher than JELLY_BEAN_MR1 that want to set this flag have to declare this capability in their meta-data by setting the attribute canRequestTouchExplorationMode to true, otherwise this flag will be ignored. For how to declare the meta-data of a service refer to AccessibilityService.SERVICE_META_DATA.

Services targeting API version equal to or lower than JELLY_BEAN_MR1 will work normally, i.e. the first time they are run, if this flag is specified, a dialog is shown to the user to confirm enabling explore by touch.

Constant Value: 4 (0x00000004)

public static final int FLAG_RETRIEVE_INTERACTIVE_WINDOWS

This flag indicates to the system that the accessibility service wants to access content of all interactive windows. An interactive window is a window that can be touched by a sighted user when explore by touch is not enabled. If this flag is not set your service will not receive TYPE_WINDOWS_CHANGED events, calling AccessibilityServiceAccessibilityService.getWindows() will return an empty list, and AccessibilityNodeInfo.getWindow() will return null.

Services that want to set this flag have to declare the capability to retrieve window content in their meta-data by setting the attribute canRetrieveWindowContent to true, otherwise this flag will be ignored. For how to declare the meta-data of a service refer to AccessibilityService.SERVICE_META_DATA.

Constant Value: 64 (0x00000040)

Fields

public static final Creator<AccessibilityServiceInfo> CREATOR

Added in API level 4

public int feedbackType

Added in API level 4

The feedback type an AccessibilityService provides.

Can be dynamically set at runtime.

public long notificationTimeout

Added in API level 4

The timeout after the most recent event of a given type before an AccessibilityService is notified.

Can be dynamically set at runtime..

Note: The event notification timeout is useful to avoid propagating events to the client too frequently since this is accomplished via an expensive interprocess call. One can think of the timeout as a criteria to determine when event generation has settled down.

public String[] packageNames

Added in API level 4

The package names an AccessibilityService is interested in. Setting to null is equivalent to all packages.

Can be dynamically set at runtime.

Public Constructors

public AccessibilityServiceInfo ()

Added in API level 4

Creates a new instance.

Public Methods

public static String capabilityToString (int capability)

Added in API level 18

Returns the string representation of a capability. For example, CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT is represented by the string CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT.

Parameters
capability The capability.
Returns
  • The string representation.

public int describeContents ()

Added in API level 4

Describe the kinds of special objects contained in this Parcelable's marshalled representation.

Returns
  • a bitmask indicating the set of special object types marshalled by the Parcelable.

public boolean equals (Object obj)

Added in API level 4

Compares this instance with the specified object and indicates if they are equal. In order to be equal, o must represent the same object as this instance using a class-specific comparison. The general contract is that this comparison should be reflexive, symmetric, and transitive. Also, no object reference other than null is equal to null.

The default implementation returns true only if this == o. See Writing a correct equals method if you intend implementing your own equals method.

The general contract for the equals and hashCode() methods is that if equals returns true for any two objects, then hashCode() must return the same value for these objects. This means that subclasses of Object usually override either both methods or neither of them.

Parameters
obj the object to compare this instance with.
Returns
  • true if the specified object is equal to this Object; false otherwise.

public static String feedbackTypeToString (int feedbackType)

Added in API level 14

Returns the string representation of a feedback type. For example, FEEDBACK_SPOKEN is represented by the string FEEDBACK_SPOKEN.

Parameters
feedbackType The feedback type.
Returns
  • The string representation.

public static String flagToString (int flag)

Added in API level 14

Returns the string representation of a flag. For example, DEFAULT is represented by the string DEFAULT.

Parameters
flag The flag.
Returns
  • The string representation.

public boolean getCanRetrieveWindowContent ()

Added in API level 14

This method was deprecated in API level 18.
Use getCapabilities().

Whether this service can retrieve the current window's content.

Statically set from meta-data.

Returns
  • True if window content can be retrieved.

public int getCapabilities ()

Added in API level 18

Returns the bit mask of capabilities this accessibility service has such as being able to retrieve the active window content, etc.

Returns
  • The capability bit mask.

public String getDescription ()

Added in API level 14

This method was deprecated in API level 16.
Use loadDescription(PackageManager).

Gets the non-localized description of the accessibility service.

Statically set from meta-data.

Returns
  • The description.

public String getId ()

Added in API level 14

The accessibility service id.

Generated by the system.

Returns
  • The id.

public ResolveInfo getResolveInfo ()

Added in API level 14

The service ResolveInfo.

Generated by the system.

Returns
  • The info.

public String getSettingsActivityName ()

Added in API level 14

The settings activity name.

Statically set from meta-data.

Returns
  • The settings activity name.

public int hashCode ()

Added in API level 4

Returns an integer hash code for this object. By contract, any two objects for which equals(Object) returns true must return the same hash code value. This means that subclasses of Object usually override both methods or neither method.

Note that hash values must not change over time unless information used in equals comparisons also changes.

See Writing a correct hashCode method if you intend implementing your own hashCode method.

Returns
  • this object's hash code.

public String loadDescription (PackageManager packageManager)

Added in API level 16

The localized description of the accessibility service.

Statically set from meta-data.

Returns
  • The localized description.

public String toString ()

Added in API level 4

Returns a string containing a concise, human-readable description of this object. Subclasses are encouraged to override this method and provide an implementation that takes into account the object's type and data. The default implementation is equivalent to the following expression:

   getClass().getName() + '@' + Integer.toHexString(hashCode())

See Writing a useful toString method if you intend implementing your own toString method.

Returns
  • a printable representation of this object.

public void writeToParcel (Parcel parcel, int flagz)

Added in API level 4

Flatten this object in to a Parcel.

Parameters
parcel The Parcel in which the object should be written.
flagz Additional flags about how the object should be written. May be 0 or PARCELABLE_WRITE_RETURN_VALUE.