以编程方式切换键盘配置

raj*_*nkz 14 android android-softkeyboard

有没有办法我们可以编程方式切换已安装的键盘(无需手动进入设置部分)?

我的要求是,用户会看到手机上安装的所有键盘,并获得一个选择器对话框以切换到一个愿望?

(基本上我们想减少将他转移到设置页面的步骤)

Rob*_*ert 31

这段代码将满足您的要求:

InputMethodManager imeManager = (InputMethodManager) getApplicationContext().getSystemService(INPUT_METHOD_SERVICE);
imeManager.showInputMethodPicker();
Run Code Online (Sandbox Code Playgroud)

正如Commonsware在他的回答中指出的那样,在用户的背后无法做到这一点.


kpn*_*a12 13

如果您的应用具有系统权限,并且拥有该权限

<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
Run Code Online (Sandbox Code Playgroud)

您可以通过编程方式启用键盘并将其设置为当前键盘,使其成为默认键盘,无需用户知识或干预!

//get the old default keyboard in case you want to use it later, or keep it enabled
String oldDefaultKeyboard = Settings.Secure.getString(resolver, Setting.Secure.DEFAULT_INPUT_METHOD);

//enable your keyboard
Settings.Secure.putString(resolver, Settings.Secure.ENABLED_INPUT_METHODS, "com.my.keyboard/.full.path");

//set your keyboard as the new default keyboard
Settings.Secure.putString(resolver, Settings.Secure.DEFAULT_INPUT_METHOD, "com.my.keyboard/.full.path");
Run Code Online (Sandbox Code Playgroud)

您可以通过提供键盘列表来启用多个键盘(例如默认键盘和您自己的键盘)ENABLED_INPUT_METHODS,以":"分隔.查看文档

您可以通过调用ime list -a来验证键盘的完整包和路径IDadb shell


Ale*_*hov 12

如果您有root设备,则可以使用/system/bin/ime实用程序.

列出所有已安装的输入法: # ime list -a

将谷歌的键盘设为默认值:
# ime set com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME

在Java端使用Runtime.getRuntime().exec(...).


Com*_*are 5

有没有办法我们可以编程方式切换安装的键盘(没有进入设置部分)?

幸运的是,没有,出于安全考虑.如果应用程序可以指定使用哪种输入法编辑器,恶意软件会将输入法编辑器更改为其键盘记录程序.

  • @Robert:我完全理解这个问题,谢谢. (3认同)
  • 使用"批准的输入法",我指的是用户在安装第三方输入法时会收到警告对话.确认警告后,第三方键盘将显示在输入方法列表中.安装是安全风险的地方,而不是选择输入方法.无论如何,实际上有一个API允许应用程序向用户显示输入方法列表.看看我对rajankz问题的回答. (2认同)
  • @Robert:"我指的是用户在安装第三方输入法时会收到带有警告的对话" - 安装时没有这样的警告,至少现在没有. (2认同)