我正在开发一个与服务器通信的应用程序,并且一度需要强制打开键盘并将键盘上的按下字符发送到服务器。
一切正常,直到我的手机升级到 Android Lollipop ,现在突然键盘打开,但对任何互动都没有反应。另一方面,当我尝试键入键盘字母时,键盘布局下的所有按钮都会作出反应。这意味着键盘布局让一切都通过。
我使用按钮打开键盘:
public void b_view_keyboard(View view) {
view.requestFocusFromTouch();
imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
}
为了阅读按下的按钮,我使用常规的onKeyDown(int keyCode, KeyEvent event)
,在 Android Lollipop 更新之前一直很有用。
我发现了一个不同的帖子“Android Lollipop soft keyboard doesn't accept keypresses with GL surface”,其中该人遇到了完全相同的问题(2015年3月26日也没有回答)。
我感谢所有能帮助我解决这个恼人问题的人,
谢谢你, 爱德华。
我只是发现它只发生在横向。为了我的目的,我强迫横向,然后全屏键盘打开并搞砸了。在强制键盘打开的同时,如何在代码中没有全屏选项的情况下更改键盘输入类型?请记住,没有EditText或类似的。
答案 0 :(得分:0)
onKeyDown从未奏效。该功能仅适用于硬件键 - 音量,物理键盘等。可能有效的唯一方法是,如果你欺骗键盘认为你是一个空输入连接并且它试图进入最愚蠢的可能模式 - 我就是甚至不确定它是否会起作用,如果确实如此,那只会是键盘的一部分。从软键盘可靠地获取输入的唯一方法是让您的视图从onCreateInputConnection返回一个InputConnection,并在那里实现按键和提交文本功能。请注意,VAST的大多数Android键盘根本不实现类似键的功能,它们通过commitText执行所有操作,偶尔也会编写文本,因为它们是更丰富的API。