【问题标题】:Android Lollipop forced open soft Keyboard doesn't accept keypressesAndroid Lollipop 强制打开软键盘不接受按键
【发布时间】:2015-03-26 09:24:31
【问题描述】:

我正在开发一个与服务器通信的应用程序,有一次需要强制打开键盘并将键盘上按下的字符发送到服务器。

在我的手机升级到 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 或类似内容。

【问题讨论】:

    标签: java android keyboard android-5.0-lollipop


    【解决方案1】:

    onKeyDown 从来没有工作过。该功能仅适用于硬件键——音量、物理键盘等。唯一可行的方法是,如果你欺骗键盘认为你是一个空输入连接,它试图进入最愚蠢的模式——我是甚至不确定它是否会起作用,如果它起作用的话,它只会与键盘的一个子集一起使用。可靠地从软键盘获取输入的唯一方法是让您的视图从 onCreateInputConnection 返回 InputConnection 并在那里实现按键和提交文本功能。请注意,大多数 Android 键盘根本没有实现类似键的功能,它们通过 commitText 完成所有操作,偶尔还可以编写文本,因为它们的 API 更丰富。

    【讨论】:

    • onKeyDown 方法不是问题的主题。请不要像这样无益的cmets。谢谢。
    • 这是问题所在。 100% 的问题。请不要以为自己比花了 4 年时间编写 Android 键盘的人更了解。
    • 你好,Gabe Sechan。我道歉。我并没有试图冒犯比我更有经验的人。在聆听软键盘按键时,我只从不同的主题中获得了解决问题的信息。
    • 无论如何。请调查这个问题。只需一个按钮即可创建应用程序。按下按钮时,强制打开键盘。就是这样,不包括侦听器或 onKeyDown 事件。运行应用程序并强制显示键盘时,在纵向模式下,所有按钮都会做出反应。将手机翻转到横向模式后,只有顶层按键有反应。这只是在突然安装 Lollipop 后才发生的。也可以在模拟器中进行模拟。我该如何解决这个问题?谢谢。
    猜你喜欢
    • 2015-03-07
    • 2012-03-30
    • 2014-03-22
    • 2011-11-16
    • 2013-10-08
    • 1970-01-01
    • 2016-03-23
    • 2015-08-28
    • 2015-03-18
    相关资源
    最近更新 更多