我想通过单击按钮在我的 EditText 上显示 Google 语音输入 IME。所以,根据this http://android-developers.blogspot.ru/2011/12/add-voice-typing-to-your-ime.html文章和源代码 https://google-voice-typing-integration.googlecode.com/我应该写这段代码
inputMethodManager.setInputMethodAndSubtype(IBinder token, String id, InputMethodSubtype subtype)
问题是:哪里可以找到合适的代币。在源代码中我看到了这个
mInputMethodService.getWindow().getWindow().getAttributes().token
它工作得很好,但此代码位于 InputMetodService 超类中,因此它可以访问 InputMethodService 实例。但我不(不幸的是:))。
如果您有任何建议,请告诉我。谢谢。
不工作:EditText.getWindowToken()
出于安全原因,android 不允许应用程序更改 inputMethod 类型。您提到的文章是将谷歌输入法集成到自定义实现的输入法中,它不适用于应用程序。
你可以查看InputMethodManager的文档here http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html
客户端应用程序可以要求系统让用户选择一个新的 IME,但无法以编程方式切换到其本身. 这可以避免恶意应用程序将用户切换到自己的 IME,当用户导航到另一个应用程序时,它仍然运行。另一方面,IME 可以通过编程方式将系统切换到另一个 IME,因为它已经完全控制了用户输入。
您可以在 onClick 回调中提示用户切换到新的 IME,如下所示:
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showInputMethodPicker();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)