私はアクセシビリティサービスを書いています。ソフトウェア キーボードをポップアップ表示する方法で EditText フィールドにフォーカスしようとしてきましたが、うまくいきませんでした。カーソルを EditText フィールドに入れることはできますが、ソフト キーボードがポップアップしません。与えられた EditTextNode は、さまざまなアクセシビリティ イベントから取得した AccessibilityNodeInfo であり、これらすべてのアクションを試行すると nodeInfo isEditable、isFocusable、isVisibleToUser、および isClickable になり、完了時にすべて true を返します。
editTextNode.performAction(AccessibilityNodeInfo.ACTION_CLICK);
私の考えでは、上記は単に機能するはずであり、少なくとも私のデバイス(Droid Ultra、Android 4.4.4)では、Androidバージョン全体ではないにしても、アクセシビリティAPIのバグです。私も試しました:
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 はやや不足しています。何にでも喜んで挑戦します。