War*_*ock 21 keyboard android kiosk-mode android-softkeyboard android-input-method
有没有办法显示连接USB键盘的软件键盘(在我的情况下是RFID阅读器)?
我试图使用InputManager强制显示它(带有这些或类似的参数),但没有运气
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
Run Code Online (Sandbox Code Playgroud)
重要提示 - 我知道状态/系统栏中有一个按钮可以显示它,但用户(Kiosk应用程序)看不到此按钮.
And*_*ris 18
即使存在硬键盘,您也需要覆盖onEvaluateInputViewShown()上的InputMethodService方法以评估为true.见onEvaluateInputShown()和软输入视图部分InputMethodService.尝试创建自己的自定义InputMethodService类以覆盖此方法.
编辑:onEvaluateInputShown()的来源应该有所帮助.解决方案应该像创建自己的类一样简单,该类扩展InputMethodService并覆盖这一个方法,该方法只有几行.确保将自定义服务添加到清单中.
来源:
"覆盖它以控制何时应向用户显示软输入区域.默认实现仅在没有硬键盘或键盘被隐藏时显示输入视图.如果更改返回的内容,则需要调用updateInputViewShown ()自己每当返回的值可能已经改变,以便重新评估和应用它."
public boolean onEvaluateInputViewShown() {
Configuration config = getResources().getConfiguration();
return config.keyboard == Configuration.KEYBOARD_NOKEYS
|| config.hardKeyboardHidden == Configuration.KEYBOARDHIDDEN_YES;
}
Run Code Online (Sandbox Code Playgroud)
以下是您可以检查的可能配置.Configuration.KEYBOARD_NOKEYS对应没有硬件键盘.如果没有硬件键盘或硬件键盘被隐藏,则此方法返回true(应显示软键盘).删除这两个检查并简单地返回true应该使软件键盘可见,即使连接了硬件键盘也是如此.
尝试(未测试):
public boolean onEvaluateInputViewShown() {
return true;
}
Run Code Online (Sandbox Code Playgroud)
由于此返回值不会更改,因此您无需自己调用updateInputViewShown().如果以不同方式修改此方法,请务必记住此详细信息.