InputMethodManager.showInputMethodPicker не отображается, когда пользовательская клавиатура в моем приложении в настоящее время не выбрана - PullRequest
0 голосов
/ 04 августа 2020

Я использую настраиваемую клавиатуру с InputMethodService. Вызов showInputMethodPicker из службы, которая является заголовком чата (плавающий виджет, как в мессенджере facebook), когда выбранная клавиатура является моей настраиваемой, работает, но если текущая выбранная клавиатура - это что-то еще, например Gboard, пользовательский интерфейс выбора метода ввода не отображается вверх, сообщения об ошибке на консоли запуска в студии android отсутствуют. Под выбранной клавиатурой я подразумеваю клавиатуру по умолчанию в настройках.

// inside main activity, start 'chat head' service when a button in app is clicked 
startService(Intent(this@MainActivity, FloatingViewService::class.java))

// inside 'chat head' service, show picker UI when a button in expanded 'chat head' menu is clicked
val imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
imm.showInputMethodPicker()

Как заставить showInputMethodPicker работать, даже если моя настраиваемая клавиатура не выбрана или это невозможно? Не знаком с Android, поэтому приветствуется альтернативный подход (если описанный выше метод неверен с самого начала).

После этого сообщения в блоге для создания «заголовка чата» и этого сообщение stackoverflow о том, как использовать showInputMethodPicker

1 Ответ

0 голосов
/ 21 августа 2020

related post , в вопросе упоминается об использовании postDelay, поэтому мой текущий обходной путь: при нажатии кнопки в службе заголовка чата создать намерение начать действие с логическими данными, используя putExtra, вызывается действие onCreate, если логическое значение истинно, вызов showInputMethodPicker после некоторой задержки (500 мс для меня работает), устанавливает логическое значение в ложь

запуск активности из службы подробности

задержка с использованием postDelayed подробностей

...