在此记录系统需要提供方法给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