在 AccessibilityEvent 中获取 window android 的详细文本

Get the detailed text of the window android in AccessibilityEvent

我使用此代码获取事件文本:

public void onAccessibilityEvent(AccessibilityEvent event) {
        Log.d(TAG, "onAccessibilityEvent"+event.getEventType());
        if(event.getEventType()==AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED){
             Log.d(TAG, "onAccessibilityEvent"+event);

示例:当我在此屏幕中时:

运行中的result是:

D/TestAccessibleService: onAccessibilityEvent EventType: TYPE_WINDOW_STATE_CHANGED; EventTime: 360090279; PackageName: com.android.settings; MovementGranularity: 0; Action: 0 [ ClassName: com.android.settings.DeviceAdminAdd; Text: [Người quản trị thiết bị]; ContentDescription: null; ItemCount: -1; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: true; Scrollable: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0

我需要的是绿色圆圈中的文本(已经在 result:Text: [Người quản trị thiết bị])和红色圆圈中的所有文本,我还没有得到红色圆圈中的文字,我怎样才能得到红色圆圈中的文字。请帮我。非常感谢...

这是辅助功能服务吗?

您收到该文本的原因是您的 AccessibilityFocus 在该元素上。如果您启用辅助功能并从左向右滑动,焦点将更改为“下一个”元素 - 继续这样做,直到您将焦点放在正确的元素上。

如果您想将辅助功能焦点设置在该元素上,您可以调用:

findViewById(R.id.{elementId}).sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)

但不建议您在生产环境中这样做。