2014-10-16 70 views
0

我正在编写无障碍服务。我一直在试图以一种弹出软件键盘的方式来关注EditText字段,但我一直不成功。我可以将光标移到EditText字段,但软键盘不会弹出。鉴于EditTextNode是一个AccessibilityNodeInfo,我从各种辅助功能事件中获取,并且当我尝试所有这些操作时都说nodeInfo isEditable,isFocusable,isVisibleToUser和isClickable,并且它们在完成时都返回true。Android辅助功能服务重点EditText

editTextNode.performAction(AccessibilityNodeInfo.ACTION_CLICK); 

在我的脑海上面应该简单地工作,而事实上,它不会是辅助功能API中的错误,如果不是因为我的整个Android版本,在我的设备上最起码(Droid的超, 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方法仅适用于字段中的文本!

这让我沮丧了几天,希望你们可以帮忙。虽然我相信我已经偶然发现了一个bug,并且将不得不等待Android进行更新。因为ACTION_CLICK方法应该真的是所需要的。但是,我可能会错过一些愚蠢的东西,Accessibility API Doc有点不足。我愿意尝试任何事情。

+0

你是正确的之前的错误,这是在可访问的API的错误。 AccessibilityNodeInfo.ACTION_CLICK调出Android 5.0(v21)开始的软键盘,但在早期版本中无法正常工作。调出软键盘的唯一方法是让用户双击,这将触发系统向文本字段发送DOWN/UP触摸事件对并调出软键盘。 – alanv 2014-10-26 09:13:46

+0

因此TL; DR在API 21之前无法通过可访问性服务以编程方式执行此操作。 – alanv 2014-10-26 09:15:08

回答

0

要重申在回答形式@ alanv的评论:

你是正确的,它是在无障碍服务API 21