软键盘一直存在实现

在此记录系统需要提供方法给APP可以控制当接入物理键盘时软键盘保持显示实现方法,网上找了很多方法都不管用,最终还是要自己去研究源码和系统设置内功能,最终找到了一个超级简单的方法;我们只需要在\packages\apps\Settings\src\com\android\settings内的其中一个BroadcastReceiver接收器或者自己创建一个BroadcastReceiver,然后我们只需要在其内自定义一个广播,然后根据APP传过来的值来控制软键盘的显示即可。

具体代码如下:

// 自定义广播

java 复制代码
private static final String INPUT_KEYBOARD = "android.intent.action.HUALI_INPUT_KEYBOARD";

状态处理代码:

java 复制代码
   if (INPUT_KEYBOARD.equals(action)) {
            InputMethodUtils.InputMethodSettings mSettings = new InputMethodUtils.InputMethodSettings(
                    context.getResources(),
                    context.getContentResolver(),
                    new HashMap<>(),
                    new ArrayList<>(),
                    UserHandle.myUserId(),
                    false /* copyOnWrite */);

            // inputKeyboardStatus 是否一致显示
            boolean status = intent.getBooleanExtra("inputKeyboardStatus", false);
            Log.d(TAG, "接收到更新软键盘一直显示状态通知:" + status);

            mSettings.setShowImeWithHardKeyboard(status);
            return;
        }

APP端代码:

Kotlin 复制代码
 val intent = Intent()
        intent.putExtra("inputKeyboardStatus", isSoftKeyboard) // isSoftKeyboard 是否一致显示
        intent.setAction("android.intent.action.HUALI_INPUT_KEYBOARD")
        requireActivity().sendBroadcast(intent)

只要方向对了实现起来就是如此简单。注:当前系统为RK3288 7.1

相关推荐
敲代码的旺仔1 年前
【uniapp】 软键盘弹出后fixed定位被顶上去问题
前端·javascript·uni-app·html·软键盘