1. 程式人生 > >Android動態切換輸入法

Android動態切換輸入法

Android中若想在自己的App中實現輸入法切換,可以有兩種方式,一種是直接程式碼中強制切換輸入法,另一種是彈出輸入法選擇框,提示使用者切換.

強制切換輸入法方式:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.setInputMethod(IBinder token, NewInputMethodName);

這種方式需要獲取token,哪位大神指點下如何獲取token...

NewInputMethodName為對應輸入法的包資訊,格式為com.sohu.inputmethod.sogou.xiaomi/.SogouIME,

下面有獲取NewInputMethodName的方法可參考.

但是這種切換方法是強制使用程式碼方式切換輸入法的,由於安全原因,Google進行了限制,這種方法要求具有系統許可權android.permission.WRITE_SECURE_SETTINGS,需要你的APP是系統級的,所以沒有安卓原始碼的話,不太好實現.

彈出選擇框方式:

獲取InputMethodManager,呼叫showInputMethodPicker()方法即可彈出切換框,此種方法不需新增系統許可權.

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE
);
imm.showInputMethodPicker();

獲取系統所有輸入法型別的方式為:

//拿到輸入法的全部條目

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
List<InputMethodInfo> list = imm.getInputMethodList();
//textView中顯示輸入法的全部條目
textView.setText(list.toString());
//輸入法選擇框

附:各主流輸入法的NewInputMethodName

搜狗輸入法:com.sohu.inputmethod.sogou/.SogouIME

百度輸入法:com.baidu.input/.ImeService

谷歌拼音輸入法:com.android.inputmethod.pinyin/.PinyinIME

預設鍵盤輸入法:com.android.inputmethod.latin/.LatinIME

訊飛輸入法: com.iflytek.inputmethod/.FlyIME