Change Keyboard Input Language Programmatically

You can change keyboard without user notification only and only if your app is running as a System app for security reasons.

You need to give Android permission first in your app’s AndroidManifest.xml

"android.permission.WRITE_SECURE_SETTINGS"

Then you need to determine id of your keyboard.

-> To know id, you need to keep your keyboard default from setting menu manually then put this print somewhere,

System.out.println(Settings.Secure.getString(getContentResolver(),Settings.Secure.DEFAULT_INPUT_METHOD));

Once you print id and you know your keyboard id you can do as per below
( I have changed my default keyboard to Japanese )

InputMethodManager imeManager = (InputMethodManager) getApplicationContext().getSystemService(INPUT_METHOD_SERVICE);

//imeManager.showInputMethodPicker(); //This is to see available keyboards.
imeManager.setInputMethod(null,"jp.co.omronsoft.openwnn/.OpenWnnJAJP");

Enjoy !!

Leave a Comment