В Android, как я могу отправить длинный пресс от InstrumentationTestCase
? Например, я хотел бы сделать sendKeys(KEYCODE_DPAD_CENTER)
, но сделаю это длинным кликом.Как вы отправляете длинную печать от InstrumentationTestCase?
3
A
ответ
2
Не знаю, если это единственный/правильный путь, но мне удалось сделать это таким образом:
public void longClickDpadCenter() throws Exception {
getInstrumentation().sendKeySync(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_CENTER));
Thread.sleep(ViewConfiguration.get(mContext).getLongPressTimeout());
getInstrumentation().sendKeySync(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_CENTER));
}
0
Вы можете попробовать вспомогательный метод ниже:
private void longPress(int key) {
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis();
KeyEvent event1 = new KeyEvent(downTime, eventTime, KeyEvent.ACTION_DOWN, key, 0);
KeyEvent event2 = new KeyEvent(downTime, eventTime, KeyEvent.ACTION_DOWN, key, 1);
getInstrumentation().sendKeySync(event1);
getInstrumentation().sendKeySync(event2);
}
И пример использование:
longPress(KeyEvent.KEYCODE_ENTER);
также может быть достигнуто с помощью следующего кода - KeyEvent событий = новый KeyEvent (простой, eventTime, KeyEvent.ACTION_DOWN, KeyEvent.KE YCODE_DPAD_CENTER, 1); getInstrumentation.sendKeySync (событие); – Vamsi