I have a requirement of changing the keyboard based on the change of language.
I have done a bit of research and found that it can be done using these APIs
- InputMethodManager setInputMethod(android.os.IBinder, java.lang.String)
- InputMethodService switchInputMethod(java.lang.String)
For the 1st API, I need an IBinder token which can be taken from InputMethodService instance by calling
mInputMethodService.getWindow().getWindow().getAttributes().token
or if I have the reference to InputMethodService object I can simply call
mInputMethodService.switchInputMethod(id)
to change the input method.
The real problem is how do I get a reference to InputMethodService object.
PS: I don't want to use InputMethodManager's showInputMethodPicker() because for my requirement I want to change it from my existing dialog which has a list of languages.
I know that this is not possible for a user app but not sure if it's also not possible for a system app or not.