Как отобразить программную клавиатуру из службы?

Короткий вопрос: Возможно ли (и как) отобразить программную клавиатуру из Служба?

Длинный вопрос: Я написал службу, которая создает «верхнюю панель», отображаемую поверх всех действий, содержащую EditText. Я хочу отображать программную клавиатуру при нажатии на этот EditText, но этого не происходит.

Конечно, я пробовал это из служб onFocusChange () и onClick ():

InputMethodManager imm = (InputMethodManager)this.getSystemService(Service.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);

Обходной путь, который я придумал заключается в том, чтобы запросить текущее действие для отображения клавиатуры путем расширения класса Activity и добавления интерфейса AIDL. Недостатком является то, что каждое ключевое событие должно быть отправлено обратно в Сервис (через другой интерфейс AIDL) и вручную преобразовано в Unicode.

Более того, если текущее действие содержит EditText, программная клавиатура работает только для действия и больше не отображается, когда выбран EditText службы.

Что мешает отображать программную клавиатуру службы, если текущее действие имеет EditText? Может быть, это ограничение Android?

9
задан Lokesh 7 November 2014 в 09:23
поделиться