Android 13 默认打开 使用屏幕键盘
原生设置里,系统-语言和输入法-实体键盘-使用屏幕键盘 选项,
关闭时,外接物理键盘,如USB键盘,输入时不会弹出软键盘。
打开时,外接物理键盘,如USB键盘,输入时会弹出软键盘。
这个选项默认是关闭的。
改为打开,如有需要,可通过 overlay
的方法修改。
--- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
+++ b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -38,4 +38,7 @@<!-- Decrease animation duration. --><fraction name="def_window_animation_scale">50%</fraction><fraction name="def_window_transition_scale">50%</fraction>
+
+ <!-- Default for Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD -->
+ <bool name="def_show_ime_with_hard_keyboard">true</bool></resources>
Settings 源码在 ./packages/apps/Settings/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
,
@Overridepublic void onResume() {super.onResume();mLastHardKeyboards.clear();scheduleUpdateHardKeyboards();mIm.registerInputDeviceListener(this, null);mShowVirtualKeyboardSwitch.setOnPreferenceChangeListener(mShowVirtualKeyboardSwitchPreferenceChangeListener);registerShowVirtualKeyboardSettingsObserver();}private void registerShowVirtualKeyboardSettingsObserver() {unregisterShowVirtualKeyboardSettingsObserver();getActivity().getContentResolver().registerContentObserver(Secure.getUriFor(Secure.SHOW_IME_WITH_HARD_KEYBOARD),false,mContentObserver,UserHandle.myUserId());updateShowVirtualKeyboardSwitch();}private void updateShowVirtualKeyboardSwitch() {mShowVirtualKeyboardSwitch.setChecked(Secure.getInt(getContentResolver(), Secure.SHOW_IME_WITH_HARD_KEYBOARD, 0) != 0);}private final OnPreferenceChangeListener mShowVirtualKeyboardSwitchPreferenceChangeListener =(preference, newValue) -> {Secure.putInt(getContentResolver(), Secure.SHOW_IME_WITH_HARD_KEYBOARD,((Boolean) newValue) ? 1 : 0);return true;};