OnKeyListener и OnKeyDown не вызываются, как вы обнаружили, при использовании программной клавиатуры. Их вызывают только при использовании аппаратной клавиатуры, которой нет на многих устройствах Android.
Я предполагаю, что вы пытаетесь захватить ключевые события, которые происходят в области EditText. В этом случае лучше всего обрабатывать как программный, так и аппаратный ввод клавиатуры: зарегистрировать TextWatcher с помощью метода addTextChangedListener ().
Обратите внимание, что на телефонах с Android 2.1 и более поздними версиями, таких как Nexus One, люди имеют возможность использовать распознавание речи для ввода текста в ваш EditText вместо ввода текста. Когда они это сделают, вы можете получить полные слова или даже полные предложения, введенные сразу. Поэтому вам нужно проверить все содержимое поля EditText при изменении содержимого.