Я пытаюсь реализовать службу метода ввода, которая получает намерения, отправленные удаленным клиентом, и в ответ на это отправляет соответствующий KeyEvent.Как отправить KeyEvents через службу метода ввода в диалоговое окно или в меню Spinner?
Я использую в input method service
этот метод
private void keyDownUp(int keyEventCode)
{
getCurrentInputConnection().sendKeyEvent(
new KeyEvent(KeyEvent.ACTION_DOWN, keyEventCode));
getCurrentInputConnection().sendKeyEvent(
new KeyEvent(KeyEvent.ACTION_UP, keyEventCode));
}
отправить KeyEvents
как в Simple Sofykeyboard Sample
, и он работает в доме, в Activities.
.. но это не работает, когда диалог или меню Spinner находится на переднем плане.
Мероприятия отправляются на номер parent activity behind the Dialog
.
Есть ли способ отправить ключи и управлять устройством, например, используя аппаратные ключи из метода ввода?
Лучшее объяснение того, что я пытаюсь сделать:
Я вроде ПИСЬМЕННЫЕ метод ввода, который позволяет управлять устройством с пульта дистанционного управления.
Я пишу в клиенте (приложение Java на моем рабочем столе компьютера) команду (например, «UP»), сервер на устройстве с sendBroadcast()
посылает намерение с информацией, и приемник в способе ввода получает его и вызывает keyDownUp с keycode
DPAD_UP key.
Обычно он работает, но когда я перехожу в приложение, которое показывает диалог, метод keyDownUp
не отправляет событие ключа в dialog
, например, для выбора да или нет но он держит управление activty
за Dialog
.
Here Я нашел кого-то с моей же проблема ... но нет ответа ...
Я отредактировал мой вопрос, пытаясь прояснить, в чем моя проблема. В вашем примере, когда я открываю диалоговое окно в приложении sms, если я отправляю команду DOWN для ключа DPAD_DOWN, это не делает диалог на переднем плане для прокрутки, но он отправляется на активность позади, ту, которая показывает список сообщений, выбрав сообщение ниже того, на которое я долго нажимал, что делает невозможным закрытие диалогового окна. Я попытался вызвать onKeyDown и onKeyUp, но они не работают ни там, где работал keyDownUp. – shutdown11
getCurrentInputConnection() всегда возвращает соединение с активностью, которая показывает диалог, и никогда не диалог. Вместо использования жестких клавиш вы можете прокручивать диалог, когда он сфокусирован, поэтому мне было интересно, как эмулировать жесткий ключ. – shutdown11
Жесткий ключ, безусловно, может быть смоделирован с помощью Instrumentation class, но требует корневого устройства. –