如何解决Android-如何在显示活动时自动显示输入法选择器?
TLDR版本:我想在输入方法之间以尽可能少的点击进行切换。在MainActivty InputMethodManager.showInputMethodPicker()
中调用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()
函数没有显示输入法选择器,但在适当时显示Bluetooth-On请求。如果我在应用程序在屏幕上的情况下锁定了手机并再次解锁,则输入法选择器会按预期方式弹出。
我的inputMethodPicker(context: Context)
函数在连接到按钮时可以正常工作。
我的猜测是问题是由调用showInputMethodPicker()
时我的应用尚未出现引起的。
(我尝试创建一个主菜单小部件,女巫执行了我的inputMethodPicker(context: Context)
很好,但是该功能什么也没做,可能是因为我猜到了某些前景/背景问题。)
每当显示活动时,如何显示输入法选择器和Bluetooth-On请求? (或点击我的主菜单窗口小部件按钮时)
解决方法
我看来可行的怪异技巧使该函数的调用延迟了一点:
override fun onResume() {
super.onResume()
Handler().postDelayed({ SettingChanger.inputMethodPicker(this) },50)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。