我扩展了 InputMethodService,希望使用此服务来显示软键盘,即使连接了硬键盘(基于以下帖子显示软键盘,即使连接了硬件键盘)。有没有办法在应用程序中绑定到此服务而无需在清单中声明它?最终结果是让 InputMethodService.onEvaluateInputViewShown 返回 true,这样即使连接了硬键盘,软键盘也会显示。
我想将扩展类 MultiInputMethodService 与 show/hideSoftKeyboard 中的 inputmethodmanager 一起使用:
public class MultiInputMethodService extends InputMethodService {
@Override
public boolean onEvaluateInputViewShown () {
Log.i("onEvaluateInputViewShow","onEvaluateInputViewShown");
return true;
}
}
我的活动:
private void showSoftKeyboard() {
InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY );
}
private void hideSoftKeyboard() {
InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(this.myInput.getEditText().getWindowToken(), 0);
}