Droidのキーをプログラムでどのようにシミュレートできますか?手動のキープレスを模倣したいと思います(ドロイドに誰かがキーを押しているように見えますが、プログラムで行われています)。
IWindowManager
に関する解決策は世の中にありますが、それは新しいSDKではもはやオプションではありません。
インストルメンテーションを使用できます。つまり、アクティビティのonCreateから呼び出される次のコードにより、メニューが複数回開いたり閉じたりします。
new Thread(new Runnable() {
@Override
public void run() {
try {
Instrumentation inst = new Instrumentation();
for ( int i = 0; i < 10; ++i ) {
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_MENU);
Thread.sleep(2000);
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
Thread.sleep(2000);
}
}
catch(InterruptedException e){
}
}
}).start();
...しかし、これがあなたが求めているものかどうかはわかりません
イベントを消費するビューがある場合は、 BaseInputConnection クラスとその sendKeyEvent メソッドを使用できます。
これを使用するには、KeyEventを受け取るターゲットビュー(EditTextなど)を指定する必要があります。例えば:
EditText editText;
BaseInputConnection inputConnection = new BaseInputConnection(editText, true);
inputConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_POUND));
この結果は、ユーザーが実際に#キーを押したようなものです(エディットテキストにフォーカスがある間)。
input text
を使用することもできます。つまり、
コンピューターからadb
経由:
adb Shell input text 'example\\@email.com'
Shell
から:
input text 'example\\@email.com'