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 - 如何在显示活动时自动显示输​​入法选择器?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 地图活动中显示地图?

如何在家庭活动android上显示进度对话框?

如何在 Android 中开始活动之前显示进度对话框?

如何在 PhoneGap 应用启动时启动 Android 活动?

应用程序启动地图活动后,如何在 android 的地图中显示我的当前位置

Android:如何在活动上方显示透明加载层