Я хочу смоделировать серию ключевых событий. Потратив немного времени на поиски, я нашел sendkeyEvent
метод объектов типа BaseInputConnection
. Итак, в функции onCreate()
класса MainActivity
я трижды отправляю ключевое событие в текстовое представление, которое я привязываю к этому действию.
@Override
protected void onCreate(Bundle savedInstanceState){
...
TextView tv = (TextView) findViewById(R.id.sample_text);
tv.setText(stringFromJNI);
tv.setOnKeyListener(this);
BaseInputConnection mInputConnection = new BaseInputConnection(tv, true);
//BaseInputConnection mInputConnection = new BaseInputConnection(tv, false);
KeyEvent kleft = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_LEFT);
for(int i=0;i<3;i++){
mInputConnection.sendKeyEvent(kleft);
Log.d(TAG, "keyevent sent");
}
}
Класс MainActivity
реализует интерфейс OnKeyListener
.
@Override
public boolean OnKey(View v, int keyCode, KeyEvent){
Log.d(TAG, "OnKey starts.");
if(event.getKeyCode()==KeyEvent.KEYCODE_DPAD_LEFT && event.getAction()==KeyEvent.ACTION_DOWN){
Log.d(TAG, "key left.");
return true;
}
return false;
}
Проверив вывод logcat, я обнаружил, что «keyevent send» трижды был printend, что означает, что ключевые события были отправлены. Но не было "запусков OnKey". Почему функция OnKey() не была вызвана?