【问题标题】:Android custom IME for specific InputType特定 InputType 的 Android 自定义 IME
【发布时间】:2023-03-16 12:06:01
【问题描述】:

我目前正在开发一个 IME,它会根据我的输入为我生成一个动态密码。 我使用了示例 SoftKeyboard 来完成这个项目。

当我需要输入密码时,我只需要更改输入法,目前看来没问题。

我的问题很简单。有没有办法只在 InputType 是密码类型时才允许使用此 IME,例如 (InputType = TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD) 或者当 InputType 是密码类型时,是否有指定特定键盘(在本例中为我的 IME)的方法?

谢谢!

【问题讨论】:

  • 请发布 SSCCE...

标签: android android-softkeyboard ime android-inputtype


【解决方案1】:

不。有两件事可以控制 IME。首先,用户为手机设置一个默认的 IME。无法按类型或其他任何方式将其拆分。其次,应用程序可以为文本字段请求特定的 IME。通常只有在应用程序本身提供该 IME 时才会这样做。键盘无法将自己设为默认值,也无法覆盖类型的默认值。

【讨论】:

  • 好的,谢谢你的回答 Gabe Sechan !如果 inputType 不是密码,我想我会用“删除”或其他任何内容替换所有键(执行空格)。
  • @GabeSechan 应用程序会使用什么代码来为 EditText 请求特定的 IME?
  • @ban-geoengineering 您使用 tha android:inputMethod xml oarameter,并将您要使用的完全限定类名传递给它。这应该只用于(并且只能保证工作)作为您应用程序一部分的 IME。它不应该用于强制使用特定的键盘应用程序,即使安装了该应用程序也可能无法正常工作。
  • @GabeSechan android:inputMethod 现在已弃用。无论如何我都试过了,但最终得到 ClassNotFoundException: 在路径上找不到类 "com.example.MyCustomIME": DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib, /system/lib ]]。我已将 -keep class com.example.MyCustomIME {*;} 添加到我的 proguard-rules.pro 文件中,但它没有帮助。有什么想法吗?
  • 如果您能提供帮助,我在这里发布了一个新问题:stackoverflow.com/questions/59400635/…
猜你喜欢
  • 1970-01-01
  • 2012-11-08
  • 2011-07-25
  • 2014-10-01
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
相关资源
最近更新 更多