Android - 如何在显示活动时自动显示输入法选择器?
Posted
技术标签:
【中文标题】Android - 如何在显示活动时自动显示输入法选择器?【英文标题】:Android - How do I display input method picker automaticly whenever activity is shown? 【发布时间】:2020-12-22 10:23:13 【问题描述】:TLDR 版本:我想以尽可能少的点击次数在输入法之间切换。 InputMethodManager.showInputMethodPicker()
在 MainActivty onResume()
中调用时不执行任何操作,但在添加到按钮时有效。我猜这个问题是由于调用 showInputMethodPicker()
时我的应用尚未在前台引起的。
override fun onResume()
super.onResume()
SettingChanger.inputMethodPicker(this)
fun inputMethodPicker(context: Context)
val imeManager: InputMethodManager = context.applicationContext.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
val bluetoothAdapter: BluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
// current default input method (before change)
val inputMethodNameBeforeChange = Settings.Secure.getString(
context.contentResolver,
Settings.Secure.DEFAULT_INPUT_METHOD
)
// Brings up the keyboard picker
imeManager.showInputMethodPicker()
if (inputMethodNameBeforeChange.contains("swiftkey"))
// Turn off bluetooth
bluetoothAdapter.disable()
else
// Turn on bluetooth
if (!bluetoothAdapter.isEnabled)
val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
context.startActivity(enableBtIntent)
长版:
我在我的 android 手机上使用匈牙利语物理键盘,但我喜欢的虚拟键盘没有注册它的所有字符;但是有一个不同的,所以每当我通过蓝牙连接物理键盘时,我必须切换到不同的虚拟键盘,并在完成后再次返回。
更改输入法的选项深深地隐藏在设置中,所以我编写了一个应用程序,它只需打开输入法选择器 - 为了让我的生活更轻松 - 根据我使用的方法打开/关闭蓝牙即将使用。
我希望输入法选择器自动弹出,但是当我从其他地方切换到我的应用程序时,我的 inputMethodPicker(context: Context)
函数 - 我在 onCreate()
中调用 - 不显示输入法选择器,但显示适当的蓝牙开启请求。如果我在屏幕上使用我的应用程序锁定手机并再次解锁,输入法选择器会按预期弹出。
我的inputMethodPicker(context: Context)
函数在附加到按钮时按预期工作。
我的猜测是,当调用 showInputMethodPicker()
时,我的应用尚未在前台引起问题。
(我尝试创建一个主菜单小部件,女巫执行了我的inputMethodPicker(context: Context)
就好了,但该功能什么也没做,可能也是因为我猜的一些前景/背景问题。)
每当显示活动时,我该怎么做才能显示输入法选择器和蓝牙开启请求? (或点击我的主菜单小部件按钮时)
【问题讨论】:
【参考方案1】:我的古怪技巧似乎有效地延迟了函数调用:
override fun onResume()
super.onResume()
Handler().postDelayed( SettingChanger.inputMethodPicker(this) , 50)
【讨论】:
以上是关于Android - 如何在显示活动时自动显示输入法选择器?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PhoneGap 应用启动时启动 Android 活动?