0

私はアクセシビリティサービスを書いています。ソフトウェア キーボードをポップアップ表示する方法で 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 はやや不足しています。何にでも喜んで挑戦します。

4

1 に答える 1

0

@alanv のコメントを回答形式で言い換えるには:

API 21 より前のアクセシビリティ サービスのバグです。

于 2014-10-27T12:48:14.870 に答える