ダイアログを出さずにIMEから別のIMEに切り替える方法

自分がIME(InputMethodServiceを継承したクラス)であればswitchInputMethod()を使用することで実現可能。ただし切り替えたい相手のIMEのパッケージ名を知っている必要があります。

class TestIME extends InputMethodService {
    public void changeIME(){
        InputMethodManager manager =
            (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
        List inputMethodList = manager.getEnabledInputMethodList();
        for(InputMethodInfo imi : inputMethodList){
	    if(imi.getPackageName().equals("切り替えたいIMEのパッケージ名")){
	        this.switchInputMethod(imi.getId());
            }
        }
    }
}

アプリからやるときはInputMethodManagerのsetInputMethod()が使用出来そうですが…また今度