InputMethodManager
— это служба, которую приложения могут использовать для взаимодействия с системными клавиатурами. Такие редакторы, как EditText
, также используют его для косвенного уведомления клавиатур об изменениях (например, updateSelection
).
Я могу получить ссылку на InputMethodManager
вот так
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
Моя проблема в том, что это похоже только на системные клавиатуры. Могу ли я использовать InputMethodManager
для настраиваемой клавиатуры в приложении? Если бы это было только для одного изолированного приложения, мне было бы все равно, но я включаю пользовательскую клавиатуру в библиотеку, которая будет использоваться во многих приложениях. Мне нужен стандартный способ общения редакторов с клавиатурой.
Должен ли я писать свой собственный менеджер методов ввода или есть способ использовать стандартную InputMethodManager
с моей пользовательской клавиатурой в приложении?
Обновить
Вот несколько подсказок о том, как я мог бы реализовать свой собственный диспетчер методов ввода, если нет возможности использовать стандартный.
InputMethodManager
(документация) (исходный код)InputMethod
интерфейсInputMethodSession
интерфейсKeyboardView.OnKeyboardActionListener
интерфейс (клавиатуры реализуют его)InputMethodService
(клавиатуры расширяют это) (документация) (исходный код)
InputMethodManager
, потому что это связано с проблемами безопасности телефона. Тем не менее, я добавил награду, чтобы убедиться, прежде чем полностью отказаться от этой идеи. - person Suragch   schedule 31.08.2017