为什么在尝试获取 SMS window 时 getRootInActiveWindow() return 为空
Why does getRootInActiveWindow() return null when trying to get the SMS window
我正在开发一个应用程序,它可以向用户读取屏幕上的文本。当用户进入 SMS 对话时,我想按顺序从上到下阅读消息。
要查询包含 SMS 对话的所有 UI 元素(即 TextViews、EditTexts 等)的 window,我在 onAccessibilityEvent(AccessibilityEvent event)
我的无障碍服务的方法。但是,每次从 SMS window(包名称:com.google.android.apps.messaging
)触发 AccessibilityEvent
时,getRootInActiveWindow()
returns null.
为什么会出现这种情况,我该如何解决这个问题?
感谢您抽出宝贵时间!
您最好从事件源中获取 window。 getRootInActiveWindow() 是早期的遗留问题,有时没有活动的 window and/or window 未注册或未正确响应。
如果您将 getRootInActiveWindow()
设为 null,则尝试获取该特定节点内的节点,然后您可以在该特定节点上查询 getRootInActiveWindow()
。
示例:
node.getRootInActiveWindow() = null;
然后尝试,node.get(0).getRootInActiveWindow()
或 node.get(1).getRootInActiveWindow()
希望这能解决您的问题。
将 SERVICE_META_DATA
中的 canRetrieveWindowContent
设置为 true
。
我正在开发一个应用程序,它可以向用户读取屏幕上的文本。当用户进入 SMS 对话时,我想按顺序从上到下阅读消息。
要查询包含 SMS 对话的所有 UI 元素(即 TextViews、EditTexts 等)的 window,我在 onAccessibilityEvent(AccessibilityEvent event)
我的无障碍服务的方法。但是,每次从 SMS window(包名称:com.google.android.apps.messaging
)触发 AccessibilityEvent
时,getRootInActiveWindow()
returns null.
为什么会出现这种情况,我该如何解决这个问题?
感谢您抽出宝贵时间!
您最好从事件源中获取 window。 getRootInActiveWindow() 是早期的遗留问题,有时没有活动的 window and/or window 未注册或未正确响应。
如果您将 getRootInActiveWindow()
设为 null,则尝试获取该特定节点内的节点,然后您可以在该特定节点上查询 getRootInActiveWindow()
。
示例:
node.getRootInActiveWindow() = null;
然后尝试,node.get(0).getRootInActiveWindow()
或 node.get(1).getRootInActiveWindow()
希望这能解决您的问题。
将 SERVICE_META_DATA
中的 canRetrieveWindowContent
设置为 true
。