Android辅助功能服务焦点EditText

时间:2014-10-16 13:12:16

标签: android accessibilityservice accessibility-api

我正在写一个辅助功能服务。我一直试图以弹出软件键盘的方式聚焦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有点不足。我愿意尝试任何事情。

1 个答案:

答案 0 :(得分:0)

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

您是对的,这是API 21之前的辅助功能服务中的错误。