0

我正在编写无障碍服务。我一直试图以弹出软件键盘的方式集中 EditText 字段,但我没有成功。我能够将光标移到 EditText 字段中,但没有弹出软键盘。鉴于 EditTextNode 是我从各种可访问性事件中获得的 AccessibilityNodeInfo,并且当我尝试所有这些操作时,说 nodeInfo isEditable、isFocusable、isVisibleToUser 和 isClickable,它们在完成后都返回 true。

editTextNode.performAction(AccessibilityNodeInfo.ACTION_CLICK);

在我看来,上述内容应该可以正常工作,而且事实上它不是 Accessibility API 中的一个错误,如果不是针对我的整个 android 版本,至少在我的设备上(Droid Ultra,Android 4.4.4)。我也试过:

editTextNode.performAction(AccessibilityNodeInfo.ACTION_FOCUS);

将焦点放在字段中,以便我可以看到输入光标,但没有键盘。

editTextNode.performAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS);

除非启用对讲,否则不会真正做任何事情。

editTextNode.performAction(AccessibilityNodeInfo.ACTION_SET_SELECTION, someBundle);

连同适当的参数,这将起作用,但前提是 editText 字段中已经存在文本。我还需要在空文本字段上拉起键盘。是的,我尝试为开始和结束文本选择参数输入 0,0。SET_SELECTION 方法仅适用于字段中的文本!

困扰了我几天,希望各位大神帮忙。虽然我相信我偶然发现了一个错误,并且将不得不等待 Android 更新。因为 ACTION_CLICK 方法应该是真正需要的。但是,我可能会遗漏一些愚蠢的东西,Accessibility API Doc 有点少。我愿意尝试任何事情。

4

1 回答 1

0

以答案形式重述@alanv 的评论:

你是对的,这是 API 21 之前的无障碍服务中的一个错误。

于 2014-10-27T12:48:14.870 回答