我正在写一个辅助功能服务。我一直试图以弹出软件键盘的方式聚焦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有点不足。我愿意尝试任何事情。
答案 0 :(得分:0)
以答案形式重述@ alanv的评论:
您是对的,这是API 21之前的辅助功能服务中的错误。