Android動態切換輸入法
阿新 • • 發佈:2019-02-18
Android中若想在自己的App中實現輸入法切換,可以有兩種方式,一種是直接程式碼中強制切換輸入法,另一種是彈出輸入法選擇框,提示使用者切換.
強制切換輸入法方式:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.setInputMethod(IBinder token, NewInputMethodName);
這種方式需要獲取token,哪位大神指點下如何獲取token...
NewInputMethodName為對應輸入法的包資訊,格式為com.sohu.inputmethod.sogou.xiaomi/.SogouIME,
但是這種切換方法是強制使用程式碼方式切換輸入法的,由於安全原因,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