gpt4 book ai didi

android - 在InputMethodService 外部调用InputMethodManager.setInputMethod(IBinder token, String id)。哪里可以找到代币?

转载 作者:行者123 更新时间:2023-12-02 14:40:10 24 4
gpt4 key购买 nike

我想通过单击按钮在我的 EditText 上显示 Google 语音输入 IME。所以,根据this文章和source code我应该写这段代码

inputMethodManager.setInputMethodAndSubtype(IBinder token, String id, InputMethodSubtype subtype)

问题是:哪里可以找到合适的 token 。在源代码中我看到了这个

mInputMethodService.getWindow().getWindow().getAttributes().token

它工作得很好,但是这个代码位于InputMetodService父类(super class)中,所以它可以访问InputMethodService实例。但我没有(不幸的是:))。

如果您有任何建议,请告诉我。谢谢。

不起作用: EditText.getWindowToken()

最佳答案

出于安全原因,android 不允许应用程序更改 inputMethod 类型。您提到的文章是将谷歌输入法集成到自定义实现的输入法中,它不适用于应用程序。您可以查看 InputMethodManager here 的文档

客户端应用程序可以要求系统让用户选择一个新的 IME,但不能以编程方式自行切换到一个 IME这可以避免恶意应用程序将用户切换到自己的 IME,当用户导航到另一个应用程序时,IME 仍保持运行。另一方面,IME 可以通过编程方式将系统切换到另一个 IME,因为它已经完全控制了用户输入。

您可以在 onClick 回调中提示用户切换到新的 IME,如下所示:

InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showInputMethodPicker();

关于android - 在InputMethodService 外部调用InputMethodManager.setInputMethod(IBinder token, String id)。哪里可以找到代币?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15976837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com